Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 4
0
 public BookingViewModel MapFrom(Contracts.Models.Booking booking)
 {
     return(Mapper.Map <BookingViewModel>(booking));
 }
 public BookingRepresentation MapFrom(Contracts.Models.Booking booking)
 {
     return(Mapper.Map <BookingRepresentation>(booking));
 }