コード例 #1
0
 public ReservationOutput Map(ReservationInput reservationInput)
 {
     return(new ReservationOutput()
     {
         Sku = _skuDictionary[reservationInput.Variant], WarehouseId = _warehouseDictionary[reservationInput.Region]
     });
 }
コード例 #2
0
ファイル: ReservationsController.cs プロジェクト: Dysar/Blinq
        public async Task <ActionResult> Reserve([FromBody] ReservationInput input)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var isBooked = ReservationIsBooked(input.SeatNo);

            if (isBooked.Item1)
            {
                return(Json("This seat is booked"));
            }


            int newId;

            try {
                newId = _context.Reservation.Max(x => x.Id) + 1;
            } catch (System.InvalidOperationException) {
                newId = 0;
            }


            var r = new Reservation {
                Id         = newId,
                SeatNo     = input.SeatNo,
                Status     = ReservationStatus.reserved,
                ExpireTime = DateTime.Now.AddHours(3)
            };

            _context.Reservation.Add(r);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetReservation", new { id = r.Id }, r));


            // bool exists = _context.Reservation
            //     .Any(res =>
            //     res.SeatNo == input.SeatNo
            // );

            // if (!exists){
            //     var reservation = new Reservation{
            //         Id = Guid.NewGuid().ToString(),
            //         Status = input.Status,
            //         SeatNo = input.SeatNo,
            //         ExpireTime = UnixTimeStampToDateTime(input.ExpireTime)
            //     };

            //     _context.Reservation.Add(reservation);
            //     await _context.SaveChangesAsync();
            //     return Json(reservation);
            // }
        }
コード例 #3
0
        private void AssertRentDatesValid(ReservationInput input)
        {
            if (DateTime.Now > input.ReservedTo)
            {
                throw CreateReservationException.DateToCantBeInPast();
            }

            if (input.ReservedFrom >= input.ReservedTo)
            {
                throw CreateReservationException.InvalidDateValues();
            }
        }
コード例 #4
0
        private async Task AssertRentDatesNotBusyAsync(ReservationInput input)
        {
            var reservations = ReservationRepository
                               .FindAll()
                               .Where(r => input.RoomId == r.Room.Id &&
                                      (r.ReservedFrom <= input.ReservedFrom && input.ReservedFrom <= r.ReservedTo ||
                                       r.ReservedFrom <= input.ReservedTo && input.ReservedTo <= r.ReservedTo));

            if (0 != await reservations.CountAsync())
            {
                throw CreateReservationException.DatesAreBusy();
            }
        }
コード例 #5
0
        public async Task ExecuteAsync(ReservationInput input)
        {
            AssertRentDatesValid(input);
            await AssertRentDatesNotBusyAsync(input);

            var services = await ServiceRepository.FindAll()
                           .Where(service => input.ServiceIds.Contains(service.Id))
                           .ToListAsync();

            var room = await RoomRepository.GetAsync(input.RoomId);

            var reservation = new ReservationEntity(CurrentUser !, room, input.ReservedFrom, input.ReservedTo, services);

            await ReservationRepository.SaveAndFlushAsync(reservation);
        }
コード例 #6
0
        public async Task <IActionResult> Reservation([FromBody] ReservationInput reservation)
        {
            try
            {
                var result = await _reservationService.InsertAsync(reservation.UserId, reservation.ProductionId, DateTime.Now, reservation.InitialDate, reservation.FinalDate);

                if (result > 0)
                {
                    return(Ok());
                }
                return(OkOrNoContent(_notificationHandler.GetNotifications()));
            }
            catch (Exception ex)
            {
                return(BadRequest());;
            }
        }
コード例 #7
0
 public async Task CreateReservation([FromServices] CreateReservationCommand command, [FromBody] ReservationInput input)
 {
     await command.ExecuteAsync(input);
 }