170 lines
6.2 KiB
C#
170 lines
6.2 KiB
C#
using MongoDB.Bson;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace LolDataRequestLib.ResponseData
|
|
{
|
|
class 밴데이터 : IResponseData
|
|
{
|
|
|
|
|
|
public DataTable 디비데이터를데이터테이블로만듬()
|
|
{
|
|
List<DataTable> rtnValue = new List<DataTable>();
|
|
|
|
DataTable 밴리스트테이블 = new DataTable(DBDefine.요청데이터분류.밴데이터.ToString());
|
|
rtnValue.Add(밴리스트테이블);
|
|
|
|
//추가 시작
|
|
// 1) 순번 컬럼을 int로 (정렬/비교 안정화)
|
|
밴리스트테이블.Columns.Add("순번", typeof(int));
|
|
밴리스트테이블.Columns.Add("챔피언ID");
|
|
밴리스트테이블.Columns.Add("챔피언이름");
|
|
밴리스트테이블.Columns.Add("팀");
|
|
|
|
// 여기부터 새로 넣기
|
|
var dm = DataManager.getInstance();
|
|
|
|
if (dm.밴픽데이터 == null || dm.밴픽데이터.IsBsonNull || !dm.밴픽데이터.IsBsonDocument)
|
|
{
|
|
밴리스트테이블.TableName = DBDefine.요청데이터분류.밴데이터.ToString();
|
|
return 밴리스트테이블;
|
|
}
|
|
|
|
var doc = dm.밴픽데이터.AsBsonDocument;
|
|
|
|
if (!doc.TryGetValue("bannedChampions", out var banned) || banned == null || banned.IsBsonNull || !banned.IsBsonArray)
|
|
{
|
|
밴리스트테이블.TableName = DBDefine.요청데이터분류.밴데이터.ToString();
|
|
return 밴리스트테이블;
|
|
}
|
|
|
|
//List<BsonValue> 밴데이터 = banned.AsBsonArray.ToList();
|
|
|
|
|
|
List<BsonValue> 밴데이터 = dm.밴픽데이터["bannedChampions"].AsBsonArray.ToList();
|
|
var turns = 밴데이터.Select(x => x["pickTurn"].ToInt32()).ToList();
|
|
|
|
bool isGlobalTurnFormat = turns.Any(t => t >= 13); // 1~6 + 13~16
|
|
bool isDirectSlotFormat = turns.Distinct().Count() == turns.Count // 1~10 같은 직접 슬롯
|
|
&& turns.All(t => t >= 1 && t <= 10);
|
|
|
|
foreach (BsonValue item in 밴데이터)
|
|
{
|
|
DataRow bufRow = 밴리스트테이블.NewRow();
|
|
|
|
int pickTurn = item["pickTurn"].ToInt32();
|
|
int teamId = item["teamID"].ToInt32();
|
|
int slot = 0;
|
|
|
|
/*
|
|
if (isDirectSlotFormat)
|
|
{
|
|
slot = pickTurn;
|
|
}
|
|
else if (isGlobalTurnFormat)
|
|
{
|
|
if (pickTurn >= 1 && pickTurn <= 6) slot = pickTurn;
|
|
else if (pickTurn >= 13 && pickTurn <= 16) slot = pickTurn - 6; // 13~16 => 7~10
|
|
else slot = 0;
|
|
}
|
|
else
|
|
{
|
|
int key = pickTurn + teamId;
|
|
if (!dm.밴픽순서테이블.TryGetValue(key, out slot))
|
|
slot = 0;
|
|
}
|
|
*/
|
|
|
|
//if (slot == 0) slot = 밴리스트테이블.Rows.Count + 1;
|
|
//bufRow["순번"] = slot;
|
|
bufRow["순번"] = pickTurn;
|
|
int selectedChamp = item["championID"].ToInt32();
|
|
bufRow["챔피언ID"] = selectedChamp;
|
|
|
|
bufRow["팀"] = item["teamID"].ToInt32();
|
|
|
|
if (selectedChamp > 0)
|
|
bufRow["챔피언이름"] = dm.mChampionTable[selectedChamp].champNameKOR;
|
|
else if (selectedChamp == -1)
|
|
bufRow["챔피언이름"] = "선택없음";
|
|
|
|
밴리스트테이블.Rows.Add(bufRow);
|
|
}
|
|
// 여기까지 새로 넣기
|
|
|
|
|
|
// 5) 정렬도 int 기준으로
|
|
if (밴리스트테이블.Rows.Count > 0)
|
|
{
|
|
밴리스트테이블 = 밴리스트테이블.AsEnumerable()
|
|
.OrderBy(r => r.Field<int>("순번"))
|
|
.CopyToDataTable();
|
|
}
|
|
|
|
////추가 끝
|
|
|
|
|
|
//밴리스트테이블.Columns.Add("순번");
|
|
//밴리스트테이블.Columns.Add("챔피언ID");
|
|
//밴리스트테이블.Columns.Add("챔피언이름");
|
|
|
|
//if (DataManager.getInstance().밴픽데이터 == null)
|
|
//{
|
|
// return 밴리스트테이블;
|
|
//}
|
|
|
|
//List<BsonValue> 밴데이터 = DataManager.getInstance().밴픽데이터["bannedChampions"].AsBsonArray.ToList();
|
|
|
|
|
|
//foreach (BsonValue item in 밴데이터)
|
|
//{
|
|
// DataRow bufRow = 밴리스트테이블.NewRow();
|
|
|
|
// //Console.WriteLine(item["pickTurn"].ToInt32() + item["teamID"].ToInt32());
|
|
|
|
// if (DataManager.getInstance().isNewBanPick)
|
|
// {
|
|
// bufRow["순번"] = item["pickTurn"].ToInt32();
|
|
// }
|
|
// else
|
|
// {
|
|
// bufRow["순번"] = DataManager.getInstance().밴픽순서테이블[item["pickTurn"].ToInt32() + item["teamID"].ToInt32()];
|
|
// }
|
|
|
|
|
|
// int selectedChamp = item["championID"].ToInt32();
|
|
// if (selectedChamp > 0 )
|
|
// {
|
|
// bufRow["챔피언이름"] = DataManager.getInstance().mChampionTable[selectedChamp];
|
|
// }
|
|
// if (selectedChamp == -1)
|
|
// {
|
|
// bufRow["챔피언이름"] = "선택없음";
|
|
// }
|
|
// bufRow["챔피언ID"] = selectedChamp;
|
|
|
|
|
|
|
|
|
|
// 밴리스트테이블.Rows.Add(bufRow);
|
|
//}
|
|
|
|
|
|
//if (밴리스트테이블.Rows.Count > 0)
|
|
//{
|
|
// 밴리스트테이블 = 밴리스트테이블.AsEnumerable().OrderBy(r => Convert.ToInt32(r.Field<string>("순번"))).CopyToDataTable();
|
|
//}
|
|
|
|
|
|
|
|
밴리스트테이블.TableName = DBDefine.요청데이터분류.밴데이터.ToString();
|
|
return 밴리스트테이블;
|
|
|
|
}
|
|
}
|
|
} |