Esempio n. 1
0
        public override int GetHashCode()
        {
            var hashCode = 2146608948;

            hashCode = hashCode * -1521134295 + LotteryId.GetHashCode();
            hashCode = hashCode * -1521134295 + DateRealized.GetHashCode();
            hashCode = hashCode * -1521134295 + EqualityComparer <List <int> > .Default.GetHashCode(Dozens);

            hashCode = hashCode * -1521134295 + Prize1.GetHashCode();
            hashCode = hashCode * -1521134295 + Prize2.GetHashCode();
            hashCode = hashCode * -1521134295 + Prize3.GetHashCode();
            hashCode = hashCode * -1521134295 + Prize4.GetHashCode();
            hashCode = hashCode * -1521134295 + Prize5.GetHashCode();
            return(hashCode);
        }
        public void Save()
        {
            var context = DataEntitiesProvider.Provide();
            var evt     = context.Events.First(x => x.OlympiadId == CurrentOlympiadId && x.Code == EventCode);

            // There's no "create" here
            if (evt == null)
            {
                throw new ArgumentException("No such event " + EventCode + " in olympiad " + CurrentOlympiadId);
            }

            evt.EIN = EventId;
            evt.Arbiters.Clear();
            var arbiter = context.Contestants.ToList().FirstOrDefault(a => a.FullName() == Arbiter);

            if (arbiter != null)
            {
                evt.Arbiters.Add(new Arbiter()
                {
                    EIN = EventId, Name = arbiter
                });
            }
            evt.Location         = Location;
            evt.Entry_Fee        = EntryFee;
            evt.Number_in_Team   = NumberInTeam;
            evt.Prize_fund       = PrizeFund;
            evt.C1st_Prize       = Prize1.ToString();
            evt.C2nd_Prize       = Prize2.ToString();
            evt.C3rd_Prize       = Prize3.ToString();
            evt.JNR_1st_Prize    = JuniorPrize1.ToString();
            evt.JNR_2nd_Prize    = JuniorPrize2.ToString();
            evt.JNR_3rd_Prize    = JuniorPrize3.ToString();
            evt.Other_Prizes     = OtherPrizes;
            evt.JNR_Other_Prizes = JuniorOtherPrizes;
            evt.Pentamind        = Pentamind;
            evt.PentamindFactor  = PentamindFactor;
            evt.incMaxFee        = IncludedInMaxFee;
            evt.JNR_Medals       = JuniorMedals;
            evt.Type             = Type;
            evt.X_Num            = ExpectedNumber;
            evt.Notes            = Notes;
            evt.No_Sessions      = NumSessions;

            evt.Event_Sess.Clear();
            foreach (var s in Sessions)
            {
                var session = new Event_Sess()
                {
                    EIN = EventId, Date = s.Date, Session = s.SessionCode
                };
                evt.Event_Sess.Add(session);
            }

            // Entrants are *not* added here but their ranks etc are
            foreach (var e in Entrants)
            {
                var entrant = context.Entrants.First(x => x.EntryNumber == e.EntrantId);
                entrant.Absent      = e.Absent;
                entrant.Medal       = (string.IsNullOrEmpty(e.Medal)) ? null : e.Medal;
                entrant.JuniorMedal = (string.IsNullOrEmpty(e.JuniorMedal)) ? null : e.JuniorMedal;
                entrant.Rank        = e.Rank;
                // zero length constraint
                entrant.Score = (string.IsNullOrWhiteSpace(e.Score)) ? null : e.Score;
                if (e.Rank > 0)
                {
                    entrant.Penta_Score = e.PentaScore;
                }
                else
                {
                    entrant.Penta_Score = null;
                }
                entrant.Tie_break = e.TieBreak;
                entrant.Partner   = e.TeamOrPair;
            }

            context.SaveChanges();

            // Now set the Number. This has to be done in conjunction with other events.
            var indexer = new EventIndexer();

            indexer.IndexEvents(CurrentOlympiadId);

            // Can't see a better place to do this for now.
            OnPropertyChanged("Totals");
        }