Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }