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 디비데이터를데이터테이블로만듬()
        {
            
            DataTable 픽리스트테이블 = new DataTable(DBDefine.요청데이터분류.픽데이터.ToString());
            
            픽리스트테이블.Columns.Add("팀");
            //픽리스트테이블.Columns.Add("포지션");
            픽리스트테이블.Columns.Add("선수닉네임");
            픽리스트테이블.Columns.Add("챔피언ID");
            픽리스트테이블.Columns.Add("챔피언이름");
            픽리스트테이블.Columns.Add("픽상태");
            픽리스트테이블.Columns.Add("선택스킨ID");
            픽리스트테이블.Columns.Add("순번", typeof(int));

            if (DataManager.getInstance().밴픽데이터 == null)
            {
                return 픽리스트테이블;
            }

            List<BsonValue> 블루픽데이터 = DataManager.getInstance().밴픽데이터["teamOne"].AsBsonArray.ToList();

            foreach (BsonValue item in 블루픽데이터)
            {
                DataRow bufRow = 픽리스트테이블.NewRow();
                bufRow["팀"] = DBDefine.팀구분.블루;
                //bufRow["포지션"] = (DBDefine.라인구분)item["participantID"].AsInt32 + 1;
                bufRow["선수닉네임"] = item["summonerName"];

                int selectedChamp = item["championID"].ToInt32();

                if (selectedChamp != 0)
                {
                    bufRow["챔피언이름"] = DataManager.getInstance().mChampionTable[selectedChamp].champNameKOR;
                }
                bufRow["챔피언ID"] = selectedChamp;
                
                bufRow["픽상태"] = (DBDefine.픽상태구분)item["pickMode"].ToInt32();
                bufRow["선택스킨ID"] = item["championID"];
                bufRow["순번"] = item["pickTurn"].ToInt32();

                픽리스트테이블.Rows.Add(bufRow);
            }

            List<BsonValue> 퍼플픽데이터 = DataManager.getInstance().밴픽데이터["teamTwo"].AsBsonArray.ToList();

            foreach (BsonValue item in 퍼플픽데이터)
            {
                DataRow bufRow = 픽리스트테이블.NewRow();
                bufRow["팀"] = DBDefine.팀구분.퍼플;
                //bufRow["포지션"] = (DBDefine.라인구분)item["participantID"].AsInt32 - 4;
                bufRow["선수닉네임"] = item["summonerName"];

                int selectedChamp = item["championID"].ToInt32();

                if (selectedChamp != 0)
                {
                    bufRow["챔피언이름"] = DataManager.getInstance().mChampionTable[selectedChamp].champNameKOR;
                }
                bufRow["챔피언ID"] = selectedChamp;

               
                bufRow["픽상태"] = (DBDefine.픽상태구분)item["pickMode"].ToInt32();
                bufRow["선택스킨ID"] = item["championID"];
                bufRow["순번"] = item["pickTurn"].ToInt32();

                픽리스트테이블.Rows.Add(bufRow);
            }
            

            if (DataManager.getInstance().isNewBanPick)
            {
                if (픽리스트테이블.Rows.Count > 0)
                {
                    픽리스트테이블 = 픽리스트테이블.AsEnumerable()
                        .OrderBy(r => r.Field<string>("팀") == DBDefine.팀구분.블루.ToString() ? 0 : 1) // 블루 팀 우선
                        .ThenBy(r => r.Field<int>("순번")) // 같은 팀 내에서는 순번 오름차순
                        .CopyToDataTable();
                }
            }
            

            return 픽리스트테이블;

        }

    }
}
