Beispiel #1
0
        public async Task <IActionResult> Create([FromBody] JObject createReservationDtoJObject)
        {
            var createReservationDto = new CreateReservationDto(createReservationDtoJObject);
            await _reservationRepository.Create(createReservationDto);

            return(Ok());
        }
Beispiel #2
0
        public IActionResult Post(CreateReservationDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            ReservationReadDto readDto = new ReservationReadDto();

            try
            {
                //mark room as booked
                //might want to differientiate online and admin  end points but
                //use the same implementation
                // online user's reservation room should still be free until they make payment
                //perphaps there should be a setup that tell us how long an online room should
                //remain booked before  successful transaction is confirmed.
                _repository.BeginTransaction();
                var reservation = _mapper.Map <Reservation>(model);
                // reservation.DateCreated = DateTime.Now;
                reservation.ReservationDate = DateTime.Now;
                _repository.updateRoomStatus(reservation.RoomId, RoomStatusEnum.BookedPaid);
                _repository.createReservation(reservation);
                _repository.saveChanges();
                _repository.CommitTransaction();
                readDto = _mapper.Map <ReservationReadDto>(reservation);
            }
            catch (Exception ex)
            {
                _repository.RollBackTransaction();
                throw new ApiException(ex.Message, 400);
            }

            return(Ok(readDto));
        }
Beispiel #3
0
        public async Task <APIResponse> Post(CreateReservationDto createReservationDto)
        {
            try
            {
                var reserv = _mapper.Map <Reservation>(createReservationDto);

                _cinemaDbContext.Reservation.Add(reserv);
                await _cinemaDbContext.SaveChangesAsync();

                return(APIResponse.GetAPIResponse((int)HttpStatusCode.Created, "Reservation Created Successfully", reserv));
            }
            catch (Exception x)
            {
                return(APIResponse.GetAPIResponse((int)HttpStatusCode.BadRequest, x.InnerException?.Message ?? x.Message, null));
            }
        }
Beispiel #4
0
        public async Task <GetReservationDto> CreateReservation(CreateReservationDto reservationDto)
        {
            Reservation reservation = new Reservation
            {
                ArrivalDate      = reservationDto.ArrivalDate,
                DepartureDate    = reservationDto.DepartureDate,
                NumberOfAdults   = reservationDto.NumberOfAdults,
                NumberOfChildren = reservationDto.NumberOfChildren,
                UserId           = reservationDto.UserId,
            };

            _context.Reservations.Add(reservation);
            await _context.SaveChangesAsync();

            return(new GetReservationDto(reservation));
        }
        public async Task <ActionResult <GetReservationDto> > PostReservation([FromBody] CreateReservationDto reservationDto)
        {
            GetReservationDto getReservationDto = await _reservationService.CreateReservation(reservationDto);

            return(CreatedAtAction("GetReservationByRef", new { reference = getReservationDto.Ref }, getReservationDto));
        }
Beispiel #6
0
        public async Task Create(CreateReservationDto createReservationDto)
        {
            var employeeDb = await _dbLjepotaServisContext
                             .UserStores
                             .Include(userStore => userStore.Store)
                             .SingleAsync(userStore => userStore.UserId == createReservationDto.Employee.Id);

            var store = employeeDb.Store;
            var clientStoreOrDefault = await _dbLjepotaServisContext.UserStores.SingleOrDefaultAsync(userStore => userStore.UserId == createReservationDto.Client.Id && userStore.StoreId == store.Id);

            if (clientStoreOrDefault == null)
            {
                var clientDb = await _dbLjepotaServisContext.Users.FindAsync(createReservationDto.Client.Id);

                clientStoreOrDefault = new UserStore
                {
                    UserId  = clientDb.Id,
                    User    = clientDb,
                    Store   = store,
                    StoreId = store.Id
                };

                await _dbLjepotaServisContext.AddAsync(clientStoreOrDefault);

                await _dbLjepotaServisContext.SaveChangesAsync();
            }

            var reservation = new Reservation
            {
                UserStoreEmployee   = employeeDb,
                UserStoreEmployeeId = employeeDb.Id,
                UserStore           = clientStoreOrDefault,
                UserStoreId         = clientStoreOrDefault.Id,
                TimeOfReservation   = createReservationDto.DateTimeOfReservation
            };
            await _dbLjepotaServisContext.Reservations.AddAsync(reservation);

            await _dbLjepotaServisContext.SaveChangesAsync();

            var reservationServiceList = createReservationDto.Services
                                         .Select(service =>
            {
                var serviceDb = _dbLjepotaServisContext.Services.Find(service.Id);
                return(new ReservationService
                {
                    Reservation = reservation,
                    ReservationId = reservation.Id,
                    Service = serviceDb,
                    ServiceId = serviceDb.Id
                });
            }).ToList();

            var totalTimeOfReservation = new TimeSpan();

            totalTimeOfReservation = reservationServiceList.Aggregate(totalTimeOfReservation,
                                                                      (accumulator, r) => accumulator + r.Service.Duration);

            reservation.EndOfReservation = reservation.TimeOfReservation.Add(totalTimeOfReservation);

            await _dbLjepotaServisContext.ReservationServices.AddRangeAsync(reservationServiceList);

            await _dbLjepotaServisContext.SaveChangesAsync();
        }
Beispiel #7
0
 public async Task <APIResponse> Post([FromForm] CreateReservationDto createReservationDto)
 {
     return(await _reservationService.Post(createReservationDto));
 }