public ReservationOutput Map(ReservationInput reservationInput) { return(new ReservationOutput() { Sku = _skuDictionary[reservationInput.Variant], WarehouseId = _warehouseDictionary[reservationInput.Region] }); }
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); // } }
private void AssertRentDatesValid(ReservationInput input) { if (DateTime.Now > input.ReservedTo) { throw CreateReservationException.DateToCantBeInPast(); } if (input.ReservedFrom >= input.ReservedTo) { throw CreateReservationException.InvalidDateValues(); } }
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(); } }
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); }
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());; } }
public async Task CreateReservation([FromServices] CreateReservationCommand command, [FromBody] ReservationInput input) { await command.ExecuteAsync(input); }