public void MockScoreParty()
        {
            var getData        = ScoreAreaCollection.Find(it => true).ToList();
            var groupByParty   = getData.GroupBy(it => it.IdParty).ToList();
            var totalScore     = getData.Sum(it => it.Score);
            var listScoreParty = new List <PartyList>();

            foreach (var item in groupByParty)
            {
                var totalScoreParty = item.Sum(it => it.Score);
                var percentScore    = totalScoreParty * 100.0 / totalScore;
                // var totalScoreHave = Math.Round(percentScore / 100 * 500);
                var totalScoreHave = Convert.ToInt32(Math.Round(percentScore / 100 * 500));
                var nameP          = item.FirstOrDefault(it => it.IdParty == item.Key).NameParty;
                // Any

                var totalScoreArea = item.Count(it => it.Tags.Any(i => i == "ชนะ"));
                var scorePartyList = (totalScoreHave - totalScoreArea >= 0) ? totalScoreHave - totalScoreArea : 0;
                listScoreParty.Add(new PartyList
                {
                    Id            = Guid.NewGuid().ToString(),
                    IdParty       = item.Key,
                    PartyName     = nameP,
                    TotalScore    = totalScoreHave,
                    AreaScore     = totalScoreArea,
                    NameListScore = scorePartyList,
                    PercentScore  = percentScore
                });
            }
            PartyScoreCollection.DeleteMany(it => true);
            var sortData = listScoreParty.OrderByDescending(it => it.PercentScore);

            PartyScoreCollection.InsertMany(sortData);
        }
        public List <ScoreArea> GetScoreAreaByParty(string idParty)
        {
            var getData             = ScoreAreaCollection.Find(it => it.IdParty == idParty).ToList();
            var getScoreAreaByParty = getData.Where(it => it.Tags.Any(i => i == "ชนะ")).ToList().OrderBy(it => it.IdArea).ToList();

            return(getScoreAreaByParty);
        }
        public void MockDataTable4()
        {
            var readerCsv           = new ReadCsv();
            var dataPrototypeTable2 = readerCsv.MockPrototypeDataTable2().OrderBy(it => it.IdArea).ToList();

            ScoreAreaCollection.InsertMany(dataPrototypeTable2);
        }
        public List <ScoreArea> GetScoreArea(string IdArea)
        {
            var getData  = ScoreAreaCollection.Find(it => it.IdArea == IdArea.ToUpper()).ToList();
            var sortData = getData.OrderBy(it => it.IdArea).ToList();

            return(sortData);
        }
        public List <ScoreArea> GetAllScoreTable4()
        {
            var getData  = ScoreAreaCollection.Find(it => true).ToList();
            var sortData = getData.OrderBy(it => it.IdArea).ToList();

            return(sortData);
        }
        public void CalculateScoreFromScorePoll()
        {
            var getDataScorePoll = ScorePollV3Collection.Find(it => true).ToList();
            var getDataScoreArea = ScoreAreaCollection.Find(it => true).ToList();
            var groupByArea      = getDataScorePoll.GroupBy(it => it.IdArea).ToList();
            var listScoreArea    = new List <ScoreArea>();

            foreach (var item in groupByArea)
            {
                var groupByPart = item.GroupBy(it => it.IdParty).ToList();
                foreach (var data in groupByPart)
                {
                    var getCurrentData = data.OrderByDescending(it => it.datePoll).FirstOrDefault();
                    if (getCurrentData.IdParty != "000" && getCurrentData.IdParty != "888")
                    {
                        var getDataParty = getDataScoreArea.FirstOrDefault(it => it.IdArea == getCurrentData.IdArea &&
                                                                           it.IdParty == getCurrentData.IdParty);
                        getDataParty.Score  = getCurrentData.Score;
                        getDataParty.Source = getCurrentData.Source;
                        listScoreArea.Add(getDataParty);
                    }
                }
            }
            ScoreAreaCollection.DeleteMany(it => true);
            var sortData = listScoreArea.OrderBy(it => it.IdArea).ToList();

            ScoreAreaCollection.InsertMany(sortData);
        }
        public List <ScoreArea> GetMaxScoreArea()
        {
            var getData      = ScoreAreaCollection.Find(it => true).ToList();
            var groupByArea  = getData.GroupBy(it => it.IdArea).ToList();
            var listMaxScore = new List <ScoreArea>();

            foreach (var item in groupByArea)
            {
                var getWinArea = item.FirstOrDefault(it => it.Tags.Any(i => i == "ชนะ"));
                listMaxScore.Add(getWinArea);
            }
            var sortData = listMaxScore.OrderBy(it => it.IdArea).ToList();

            return(sortData);
        }
        public void SetTags()
        {
            var getDataScoreArea = ScoreAreaCollection.Find(it => true).ToList();
            var groupByArea      = getDataScoreArea.GroupBy(it => it.IdArea).ToList();
            var listScoreArea    = new List <ScoreArea>();

            foreach (var item in groupByArea)
            {
                var maxScore = item.Max(it => it.Score);
                foreach (var data in item)
                {
                    var tagDefault = (data.Score == maxScore) ? "ชนะ" : "แพ้";
                    data.Tags = new List <string>();
                    data.Tags.Add(tagDefault);
                    // ScoreAreaCollection.ReplaceOne(it => it.Id == data.Id, data);
                    listScoreArea.Add(data);
                }
            }
            ScoreAreaCollection.DeleteMany(it => true);
            var sortData = listScoreArea.OrderBy(it => it.IdArea).ToList();

            ScoreAreaCollection.InsertMany(sortData);
        }