public async Task <Contracts.Models.Booking> BookAsync(int accommodationId, Contracts.Models.BookingDetails details) { var accommodation = await facilityDataSource.FindAccommodationAsync(accommodationId); if (accommodation == null) { throw new AccommodationNotFoundException(accommodationId); } var facility = await facilityDataSource.FindFacilityAsync(accommodation.FacilityId); var booking = new Contracts.Models.Booking { Id = Guid.NewGuid(), User = securityContext.GetCurrentUser(), AccommodationId = accommodationId, Details = details, AccommodationName = accommodation.Name, FacilityId = facility != null ? facility.Id : 0, FacilityName = facility?.Name, StreetAddress = facility?.StreetAddress }; await dataSource.CreateAsync(booking); return(booking); }
public async Task CreateAsync(Contracts.Models.Booking booking) { var bookingsDictionary = await stateManager.GetOrAddAsync <IReliableDictionary <Guid, Contracts.Models.Booking> >(Constants.BookingsDictionary); var userBookingsDictionary = await stateManager.GetOrAddAsync <IReliableDictionary <string, List <Contracts.Models.Booking> > >(Constants.UserBookingsDictionary); using (var transaction = stateManager.CreateTransaction()) { await bookingsDictionary.AddAsync(transaction, booking.Id, booking); var userBookings = await userBookingsDictionary.GetOrAddAsync(transaction, booking.User, new List <Contracts.Models.Booking>()); userBookings.Add(booking); await userBookingsDictionary.SetAsync(transaction, booking.User, userBookings); await transaction.CommitAsync(); } }
public async Task UpdateAsync(Contracts.Models.Booking booking) { var bookingsDictionary = await stateManager.GetOrAddAsync <IReliableDictionary <Guid, Contracts.Models.Booking> >(Constants.BookingsDictionary); var userBookingsDictionary = await stateManager.GetOrAddAsync <IReliableDictionary <string, List <Contracts.Models.Booking> > >(Constants.UserBookingsDictionary); using (var transaction = stateManager.CreateTransaction()) { await bookingsDictionary.SetAsync(transaction, booking.Id, booking); var userBookings = (await userBookingsDictionary.TryGetValueAsync(transaction, booking.User, LockMode.Update)).Value; var existingBooking = userBookings.First(b => b.Id == booking.Id); userBookings.Remove(existingBooking); userBookings.Add(booking); await userBookingsDictionary.SetAsync(transaction, booking.User, userBookings); await transaction.CommitAsync(); } }
public BookingViewModel MapFrom(Contracts.Models.Booking booking) { return(Mapper.Map <BookingViewModel>(booking)); }
public BookingRepresentation MapFrom(Contracts.Models.Booking booking) { return(Mapper.Map <BookingRepresentation>(booking)); }