Files
2026-04-01 20:20:09 +09:00

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 ;
}
}
}