Ejemplo n.º 1
0
        public ChampionshipViewModel()
        {
            Filter    = new ChampionshipItemFilter();
            YearItems = new List <string>();
            foreach (var item in Directory.GetFiles(FolderFactory.ChampionshipFolder))
            {
                var fi = new FileInfo(item);
                YearItems.Add(fi.Name.Replace(".xml", ""));
            }
            YearItems  = YearItems.OrderByDescending(o => o).ToList();
            MonthItems = new List <Months> {
                new Months {
                    MonthId = 0, MonthName = "alle"
                }
            };
            foreach (var indx in Functions.GetMonths())
            {
                var monthName = new DateTime(DateTime.Now.Year, indx, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("nl"));
                MonthItems.Add(new Months {
                    MonthId = indx, MonthName = monthName
                });
            }
            ShowMonthsInGrid();

            TopItems = new List <int> {
                1, 2, 3, 4, 5
            };
            Items = GetChampionshipItems(Filter);
            EnableButtons(true);
        }
Ejemplo n.º 2
0
        private List <ChampionshipItem> GetChampionshipItems(ChampionshipItemFilter filter)
        {
            ShowMonthsInGrid();
            var list = XmlFactory.ReadXml <ChampionshipItem>(FolderFactory.ChampionshipFolder, !string.IsNullOrEmpty(filter?.Year) ? filter.Year : Functions.GetCurrentChampionship());

            list = filter != null && filter.Month > 0 ? list.Where(w => w.GameMonth.Equals(filter.Month)).OrderByDescending(o => o.Score).ToList() : list.OrderByDescending(o => o.Score).ToList();
            var groupList = list.GroupBy(g => new { g.ListMemberId, g.GameId }).ToList();

            var newList = new List <ChampionshipItem>();

            int.TryParse(ConfigurationManager.AppSettings["ChampionshipStartMonth"], out var startMonth);
            int.TryParse(ConfigurationManager.AppSettings["ChampionshipEndMonth"], out var endMonth);
            foreach (var item in groupList)
            {
                ChampionshipItem first = null;
                foreach (var championshipItem in item)
                {
                    first = championshipItem;
                    break;
                }

                if (first != null)
                {
                    newList.Add(new ChampionshipItem
                    {
                        NumberOfJuryMembers = first.NumberOfJuryMembers,
                        MaxPoints           = first.MaxPoints,
                        GameMonth           = filter != null && filter.Month > 0 ? first.GameMonth : 0,
                        MemberId            = item.FirstOrDefault()?.MemberId,
                        Score = filter != null && filter.Top == 0
                            ? item.Sum(s => s.Score)
                            : item.Take(filter?.Top ?? 2).Sum(s => s.Score),
                        ScorePercentage =
                            (filter != null && filter.Top == 0
                                ? item.Sum(s => s.Score)
                                : item.Take(filter?.Top ?? 2).Sum(s => s.Score)) /
                            (double)((first.NumberOfJuryMembers -
                                      (first.Deviation && first.NumberOfJuryMembers > 2 &&
                                       first.Deviation
                                           ? 2
                                           : 0)) * first.MaxPoints *
                                     (filter?.Top ?? 2)) * 100 * (filter?.Top ?? 2)
                    });
                }

                if (filter != null && filter.Month.Equals(0))
                {
                    foreach (var it in newList)
                    {
                        var indx = 1;
                        for (var i = startMonth; i <= (startMonth > endMonth ? 12 + endMonth : endMonth); i++)
                        {
                            var type     = it.GetType();
                            var property = type.GetProperties().FirstOrDefault(w => w.Name.Contains(indx.ToString()));
                            property?.SetValue(it, Math.Round(list.Where(w => w.GameMonth.Equals(i > 12 ? i - 12 : i) && w.MemberId.Equals(it.MemberId)).Take(filter.Top).Sum(s => s.Score * 1.0 / ((s.NumberOfJuryMembers - (s.NumberOfJuryMembers > 2 && s.Deviation ? 2 : 0)) * s.MaxPoints * filter.Top)) * 100.0 * filter.Top, 2));
                            indx++;
                        }
                    }
                }
            }

            var memberTotals     = newList.GroupBy(g => IsMemberIdNumeric ? g.MemberId.PadLeft(5, '0') : g.MemberId).ToList();
            var groupMemberItems = new List <ChampionshipItem>();

            foreach (var item in memberTotals)
            {
                var members            = XmlFactory.ReadXml <MemberItem>(FolderFactory.MemberFolder, FolderTypes.Members.ToString());
                var member             = members.FirstOrDefault(w => w.ListMemberId.Equals(item.FirstOrDefault()?.ListMemberId));
                ChampionshipItem first = null;
                foreach (var championshipItem in item)
                {
                    first = championshipItem;
                    break;
                }

                groupMemberItems.Add(new ChampionshipItem
                {
                    GameMonth       = first?.GameMonth ?? 0,
                    MemberId        = item.FirstOrDefault()?.MemberId,
                    FirstName       = member != null ? member.FirstName : "John",
                    LastName        = member != null ? member.LastName : "Doe",
                    Group           = member != null ? member.Group : "",
                    Score           = item.Sum(s => s.Score),
                    Score1          = first?.Score1,
                    Score2          = first?.Score2,
                    Score3          = first?.Score3,
                    Score4          = first?.Score4,
                    Score5          = first?.Score5,
                    Score6          = first?.Score6,
                    Score7          = first?.Score7,
                    Score8          = first?.Score8,
                    Score9          = first?.Score9,
                    Score10         = first?.Score10,
                    Score11         = first?.Score11,
                    Score12         = first?.Score12,
                    ScorePercentage = item.Sum(s => s.ScorePercentage) / (filter?.Top ?? 2)
                });
            }

            if (filter != null)
            {
                if (!string.IsNullOrEmpty(filter.FirstName))
                {
                    groupMemberItems = groupMemberItems.Where(w => w.FirstName.ToUpper().Contains(filter.FirstName.ToUpper())).ToList();
                }
                if (!string.IsNullOrEmpty(filter.LastName))
                {
                    groupMemberItems = groupMemberItems.Where(w => w.LastName.ToUpper().Contains(filter.LastName.ToUpper())).ToList();
                }
                if (!string.IsNullOrEmpty(filter.Group))
                {
                    groupMemberItems = groupMemberItems.Where(w => !string.IsNullOrEmpty(w.Group) && w.Group.ToUpper().Contains(filter.Group.ToUpper())).ToList();
                }
            }
            groupMemberItems      = groupMemberItems.OrderByDescending(o => o.ScorePercentage).ThenBy(o => o.LastName).ToList();
            NumberOfRegistrations = $"{groupMemberItems.Count.ToString(CultureInfo.InvariantCulture)} registraties";
            return(groupMemberItems);
        }