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