public bool AreFieldsEqual(BookingPax original, BookingSource.Pax updated)
            {
                // Coalesce nulls and trim whitespace when comparing
                string originalValue = OriginalField(original)?.Trim() ?? String.Empty;
                string updatedValue  = UpdatedField(updated)?.Trim() ?? String.Empty;

                return(String.Equals(originalValue, updatedValue, StringComparison.InvariantCultureIgnoreCase));
            }
Example #2
0
        async Task CreatePax(SqlConnection db, Booking booking, List <BookingSource.PaxSource> sourceList)
        {
            int paxIdx = 0;

            foreach (BookingSource.PaxSource paxSource in sourceList)
            {
                BookingPax pax = BookingPax.FromSource(paxSource, booking.Id);
                await CreatePax(db, pax, paxIdx ++);
            }
        }
Example #3
0
 async Task CreatePax(SqlConnection db, BookingPax pax, int idx)
 {
     await db.ExecuteAsync("insert into [BookingPax] ([BookingId], [FirstName], [LastName], [Gender], [Dob], [Food], [CabinClassMin], [CabinClassPreferred], [CabinClassMax], [Order]) " +
                           "values (@BookingId, @FirstName, @LastName, @Gender, @Dob, @Food, @CabinClassMin, @CabinClassPreferred, @CabinClassMax, @Order)",
                           new
     {
         BookingId           = pax.BookingId,
         FirstName           = pax.FirstName,
         LastName            = pax.LastName,
         Gender              = pax.Gender,
         Dob                 = pax.Dob.ToString(),
         Food                = pax.Food,
         CabinClassMin       = pax.CabinClassMin,
         CabinClassPreferred = pax.CabinClassPreferred,
         CabinClassMax       = pax.CabinClassMax,
         Order               = idx
     });
 }
Example #4
0
        public async Task <BookingResult> CreateSoloAsync(Event evnt, SoloBookingSource source)
        {
            SoloBookingSource.Validate(source);

            var booking = new Booking
            {
                EventId        = evnt.Id,
                Reference      = _credentialsGenerator.GenerateBookingReference(),
                FirstName      = source.FirstName,
                LastName       = source.LastName,
                Email          = source.Email,
                PhoneNo        = source.PhoneNo,
                TeamName       = String.Concat(source.FirstName, ' ', source.LastName),
                SpecialRequest = String.Empty,
                InternalNotes  = String.Empty
            };

            var pax = new BookingPax
            {
                FirstName           = source.FirstName,
                LastName            = source.LastName,
                Gender              = Gender.FromString(source.Gender),
                Dob                 = new DateOfBirth(source.Dob),
                Food                = source.Food,
                CabinClassMin       = 0,
                CabinClassMax       = 0,
                CabinClassPreferred = 0
            };

            using (var db = DbUtil.Open())
            {
                await CreateBooking(db, Guid.Empty, booking);

                pax.BookingId = booking.Id;
                await CreatePax(db, pax, 0);
            }

            var password = _credentialsGenerator.GeneratePinCode();
            await _userManager.CreateAsync(new AecUser { UserName = booking.Reference, IsBooking = true }, password);

            return(new BookingResult {
                Reference = booking.Reference, Password = password
            });
        }
        async Task CreateCabins(SqlConnection db, Booking booking, List <BookingSource.Cabin> sourceList)
        {
            int cabinIdx = 0;

            foreach (BookingSource.Cabin cabinSource in sourceList)
            {
                var  cabin = BookingCabin.FromSource(cabinSource, booking.Id);
                Guid id    = await db.ExecuteScalarAsync <Guid>("insert into [BookingCabin] ([CruiseId], [BookingId], [CabinTypeId], [Order]) output inserted.[Id] values (@CruiseId, @BookingId, @CabinTypeId, @Order)",
                                                                new { CruiseId = booking.CruiseId, BookingId = booking.Id, CabinTypeId = cabin.CabinTypeId, Order = cabinIdx++ });

                int paxIdx = 0;
                IEnumerable <BookingPax> pax = cabinSource.Pax.Select(p => BookingPax.FromSource(p, id));
                await db.ExecuteAsync(
                    "insert into [BookingPax] ([BookingCabinId], [Group], [FirstName], [LastName], [Gender], [Dob], [Nationality], [Years], [Order]) values (@BookingCabinId, @Group, @FirstName, @LastName, @Gender, @Dob, @Nationality, @Years, @Order)",
                    pax.Select(p => new
                {
                    BookingCabinId = p.BookingCabinId, Group = p.Group, FirstName = p.FirstName, LastName = p.LastName, Gender = p.Gender, Dob = p.Dob.ToString(), Nationality = p.Nationality, Years = p.Years, Order = paxIdx++
                }));
            }
        }