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"); }