public async Task <bool> CancelReservation(CancelReservationDTO cancelReservation) { var reservation = await _reservationRepository.FindOneByIdAsync(cancelReservation.ReservationId); if (reservation == null) { throw new BadRequestException( $"Reservation with id {cancelReservation.ReservationId} was not found"); } if (reservation.ReservationStateId != ReservationStates.NotActive) { throw new BadRequestException("Reservation can no longer be canceled"); } var host = await _userReservationRepository.GetHostByReservationId(reservation.Id); if (host == null) { throw new BadRequestException("Host must be present in reservation"); } if (host.Id != cancelReservation.hostID) { throw new BadRequestException("You must be the host of the reservation"); } reservation.ReservationStateId = ReservationStates.Canceled; await _reservationRepository.UpdateOneAsync(reservation); return(true); }
public async Task <IActionResult> GetAllNonActiveReservationsByUserIdAsync([FromBody] CancelReservationDTO cancelReservationDTO) { try { var response = await _reservationService.CancelReservation(cancelReservationDTO); return(Ok(response)); } catch (Exception e) { return(HttpExceptionMapper.ToHttpActionResult(e)); } }