private void InsertSingleEventOrder(DataEntities context, Olympiad_Info olympiad, EntryJson order, ParsedOrder parsedOrder, Dictionary <string, Fee> eventFees) { // Don't do this case yet if (parsedOrder.BookingSpaces != parsedOrder.Entrants.Count()) { return; } List <ParsedOrder.Entrant> EntrantsToCreate = new List <ParsedOrder.Entrant>(); var evt = context.Events.FirstOrDefault(x => x.Code == parsedOrder.EventCode && x.OlympiadId == olympiad.Id); // Bad event code if (evt == null) { return; } var feeExpected = 0m; foreach (var parsedEntrant in parsedOrder.Entrants) { var contestants = context.Contestants.Where(ContestantSelector(parsedEntrant)); // Don't handle the case of people you can't verify yet if (contestants.Count() > 1) { return; } else if (contestants.Count() == 0) { EntrantsToCreate.Add(parsedEntrant); } if (parsedEntrant.DoB.HasValue && parsedEntrant.DoB.Value > olympiad.FirstDateOfBirthForJunior()) { feeExpected += eventFees[evt.Entry_Fee].Concession.Value; } else { feeExpected += eventFees[evt.Entry_Fee].Adult.Value; } } if (feeExpected != parsedOrder.BookingPrice) { order.Notes = string.Format("Wrong fee, expected {0} found {1}; ", feeExpected, parsedOrder.BookingPrice); //context.SaveChanges(); //return; } // All OK - can change entities now. if (order.Notes != null) { order.Notes = ""; } order.Notes += "Assigned to contestant(s) "; CreateEntrants(context, EntrantsToCreate); foreach (var parsedEntrant in parsedOrder.Entrants) { var contestants = context.Contestants.Where(ContestantSelector(parsedEntrant)); var thisPersonsFee = 0.0m; if (parsedEntrant.DoB.HasValue && parsedEntrant.DoB.Value > olympiad.FirstDateOfBirthForJunior()) { thisPersonsFee = eventFees[evt.Entry_Fee].Concession.Value; } else { thisPersonsFee = eventFees[evt.Entry_Fee].Adult.Value; } var thisContestant = contestants.First(); // All OK thisContestant.Payments.Add(new Payment() { Banked = 1, MindSportsID = contestants.First().Mind_Sport_ID, OlympiadId = olympiad.Id, Payment_Method = "MSO Website", Payment1 = thisPersonsFee, Year = olympiad.StartDate.Value.Year, Received = DateTime.Now }); // Put the contestant into the right event var entrant = Entrant.NewEntrant(evt.EIN, evt.Code, olympiad.Id, thisContestant, thisPersonsFee); thisContestant.Entrants.Add(entrant); // Update the order to avoid re-parsing order.ProcessedDate = DateTime.Now; order.Notes += contestants.First().Mind_Sport_ID.ToString() + " "; } context.SaveChanges(); }
private void InsertMaxFeeOrder(DataEntities context, Olympiad_Info olympiad, EntryJson order, ParsedOrder parsedOrder) { // Something wrong with the order if (parsedOrder.BookingSpaces != parsedOrder.Entrants.Count()) { return; } List <ParsedOrder.Entrant> EntrantsToCreate = new List <ParsedOrder.Entrant>(); var feeExpected = 0m; foreach (var parsedEntrant in parsedOrder.Entrants) { var contestants = context.Contestants.Where(ContestantSelector(parsedEntrant)); // Don't handle the case of people you can't verify yet if (contestants.Count() > 1) { return; } else if (contestants.Count() == 0) { EntrantsToCreate.Add(parsedEntrant); } if (parsedEntrant.DoB != null && parsedEntrant.DoB > olympiad.FirstDateOfBirthForJunior()) { feeExpected += olympiad.MaxCon.Value; } else { feeExpected += olympiad.MaxFee.Value; } } if (feeExpected != parsedOrder.BookingPrice) { order.Notes = string.Format("Wrong fee, expected {0} found {1}", feeExpected, parsedOrder.BookingPrice); context.SaveChanges(); return; } // All OK - can change entities now. order.Notes = "Assigned to contestant(s) "; CreateEntrants(context, EntrantsToCreate); foreach (var parsedEntrant in parsedOrder.Entrants) { var contestants = context.Contestants.Where(ContestantSelector(parsedEntrant)); var thisPersonsFee = 0.0m; if (parsedEntrant.DoB.HasValue && parsedEntrant.DoB.Value > olympiad.FirstDateOfBirthForJunior()) { thisPersonsFee = olympiad.MaxCon.Value; } else { thisPersonsFee = olympiad.MaxFee.Value; } contestants.First().Payments.Add(new Payment() { Banked = 1, MindSportsID = contestants.First().Mind_Sport_ID, OlympiadId = olympiad.Id, Payment_Method = "MSO Website", Payment1 = thisPersonsFee, Year = olympiad.StartDate.Value.Year, Received = DateTime.Now }); order.ProcessedDate = DateTime.Now; order.Notes += contestants.First().Mind_Sport_ID.ToString() + " "; } context.SaveChanges(); }