Beispiel #1
0
        public void UpdateContestant(ContestantVm model)
        {
            var context = DataEntitiesProvider.Provide();
            var c       = context.Contestants.SingleOrDefault(x => x.Mind_Sport_ID == model.ContestantId);

            if (c == null)
            {
                throw new ArgumentOutOfRangeException("Contestant ID " + model.ContestantId + " not recognised");
            }
            if (!context.Nationalities.Any(x => x.Name == model.Nationality))
            {
                throw new ArgumentOutOfRangeException("Nationality " + model.Nationality + " not recognised");
            }

            c.Title           = model.Title;
            c.Firstname       = model.Firstname;
            c.Initials        = model.Initials;
            c.Lastname        = model.Lastname;
            c.DateofBirth     = model.DateOfBirth;
            c.Male            = model.IsMale;
            c.OnlineNicknames = model.OnlineNicknames;
            c.BgaNickname     = model.BgaNickname;
            c.Nationality     = model.Nationality;
            c.Notes           = model.Notes;

            context.SaveChanges();
        }
Beispiel #2
0
        public ContestantVm GetContestant(int id)
        {
            var context = DataEntitiesProvider.Provide();
            var vm      = new ContestantVm();

            var contestant = context.Contestants.Single(x => x.Mind_Sport_ID == id);
            var olympiad   = context.Olympiad_Infoes.First(x => x.Current);

            vm.ContestantId    = id;
            vm.Title           = contestant.Title;
            vm.Firstname       = contestant.Firstname;
            vm.Initials        = contestant.Initials;
            vm.Lastname        = contestant.Lastname;
            vm.FullName        = contestant.FullName();
            vm.DateOfBirth     = contestant.DateofBirth;
            vm.IsMale          = contestant.Male;
            vm.OnlineNicknames = contestant.OnlineNicknames;
            vm.BgaNickname     = contestant.BgaNickname;
            vm.Nationality     = contestant.Nationality;
            vm.Nationalities   = context.Nationalities.Select(x => x.Name).OrderBy(x => x);
            vm.Notes           = contestant.Notes;
            vm.PointsType      = olympiad.Ruleset;

            var entries = contestant.Entrants
                          .Join(context.Events, e => e.EventId, g => g.EIN, (e, g) => new { e = e, g = g })
                          .Where(x => x.e.OlympiadId == olympiad.Id && x.g.OlympiadId == olympiad.Id)
                          .OrderBy(x => x.g.Code).ToList();

            vm.Events = entries.Select(e => new ContestantVm.EventVm()
            {
                EventId = e.e.EventId.Value,
                Absent  = e.e.Absent,
                Code    = e.g.Code,
                Name    = e.g.Mind_Sport,
                Fee     = e.e.Fee,
                //StandardFee = (e.g.Entry_Fee != null) ? fees[e.g.Entry_Fee].Value : 0,
                //IncludedInMaxFee = (e.g.incMaxFee.HasValue && e.g.incMaxFee.Value),
                //IsEvent = (e.g.Number > 0),
                Medal       = e.e.Medal ?? "",
                JuniorMedal = e.e.JuniorMedal ?? "",
                Partner     = e.e.Partner ?? "",
                Penta       = e.e.Penta_Score,
                Rank        = e.e.Rank.HasValue ? e.e.Rank.Value : 0,
                // Receipt = e.e.Receipt.Value,
                // TieBreak = e.e.Tie_break ?? "",
                //Date = e.e.Event.Start
            }).OrderBy(x => x.Code);

            return(vm);
        }
Beispiel #3
0
        public ContestantVm GetModel(int id)
        {
            var context = DataEntitiesProvider.Provide();

            var currentOlympiad = context.Olympiad_Infoes.First(x => x.Current);
            var contestant      = context.Contestants.FirstOrDefault(x => x.Mind_Sport_ID == id);

            if (contestant == null)
            {
                throw new ArgumentOutOfRangeException($"No contestant with id {id}");
            }

            var medalEvents1 = context.Entrants.Where(x => x.Mind_Sport_ID == id &&
                                                      (x.Medal != null || x.JuniorMedal != null) && x.OlympiadId != null)
                               .Select(x => new ContestantVm.MedalVm
            {
                Year  = x.Event.Olympiad_Info.YearOf.Value,
                Code  = x.Event.Code,
                Name  = x.Event.Mind_Sport,
                Medal = x.Medal ?? x.JuniorMedal
            })
                               .OrderByDescending(x => x.Year);
            var medalEvents = medalEvents1.ToList();

            var gmCodes = new List <string>();
            var imCodes = new List <string>();
            var cmCodes = new List <string>();

            foreach (var code in medalEvents.Select(x => x.Code).Distinct())
            {
                var name = medalEvents.First(x => x.Code == code).Name;

                var golds   = medalEvents.Count(x => x.Code == code && x.Medal == "Gold");
                var silvers = medalEvents.Count(x => x.Code == code && x.Medal == "Silver");
                var bronzes = medalEvents.Count(x => x.Code == code && x.Medal == "Bronze");
                if (golds >= 2 || (golds == 1 && silvers >= 2))
                {
                    gmCodes.Add(name);
                }
                else if ((golds == 1 && silvers + bronzes > 0) ||
                         silvers >= 2 ||
                         (silvers == 1 && bronzes >= 2))
                {
                    imCodes.Add(name);
                }
                else if ((silvers == 1 && bronzes > 0) ||
                         bronzes >= 2)
                {
                    cmCodes.Add(name);
                }
            }

            var events = context.Entrants
                         .Where(x => x.Mind_Sport_ID == id && x.OlympiadId == currentOlympiad.Id && !x.Absent)
                         .Select(x => new ContestantVm.EventVm()
            {
                Code = x.Event.Code, Name = x.Event.Mind_Sport, Rank = x.Rank, Medal = x.Medal, JuniorMedal = x.JuniorMedal, Partner = x.Partner, Penta = x.Penta_Score
            })
                         .OrderBy(evt => evt.Name);

            var model = new ContestantVm
            {
                Id                   = id,
                Name                 = string.Format("{0} {1}", contestant.Firstname, contestant.Lastname),
                Nationality          = contestant.Nationality ?? "default",
                Medals               = medalEvents,
                Grandmasters         = gmCodes,
                InternationalMasters = imCodes,
                CandidateMasters     = cmCodes,
                Events               = events,
                PointsType           = currentOlympiad.Ruleset
            };

            return(model);
        }