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