public GenericObjectResponse <ReservationRequestResponse> RequestReservation(long roomId, [FromBody] ReservationRequestPayload payload)
        {
            long?userId = AuthenticationService.IsAuthorized(Request, UserRole.RoomOwner, UserRole.Coach);

            if (userId == null)
            {
                Response.StatusCode = 401;
                return(new GenericObjectResponse <ReservationRequestResponse>(""));
            }

            ReservationRequestPayload trimmedPayload = new ReservationRequestPayload()
            {
                Description = payload.Description,
                RentStart   = payload.RentStart.TrimDate(DateTimePrecision.Minute).ToLocalDate(),
                RentEnd     = payload.RentEnd.TrimDate(DateTimePrecision.Minute).ToLocalDate()
            };
            ReservationValidationService reservationValidationService = new ReservationValidationService();
            GenericStatusMessage         roomAvailabilityValidation   = reservationValidationService.ValidateRoomAvailability(roomId, trimmedPayload);

            if (!roomAvailabilityValidation.Success)
            {
                Response.StatusCode = 400;
                return(new GenericObjectResponse <ReservationRequestResponse>(roomAvailabilityValidation.Message));
            }

            ReservationManipulationService reservationManipulationService = new ReservationManipulationService();

            return(reservationManipulationService.AddReservation(roomId, userId.Value, trimmedPayload));
        }
        public GenericStatusMessage RejectReservation(long roomId, long requestId)
        {
            long?userId = AuthenticationService.IsAuthorized(Request, UserRole.RoomOwner);

            if (userId == null)
            {
                Response.StatusCode = 401;
                return(new GenericStatusMessage(false, ""));
            }

            ReservationValidationService reservationValidationService = new ReservationValidationService();
            GenericStatusMessage         requestExistsValidation      = reservationValidationService.ValidateRequest(roomId, requestId, userId.Value);

            if (!requestExistsValidation.Success)
            {
                Response.StatusCode = 400;
                return(new GenericStatusMessage(false, requestExistsValidation.Message));
            }

            ReservationManipulationService reservationManipulationService = new ReservationManipulationService();

            return(reservationManipulationService.ChangeReservationApproval(requestId, ReservationStatus.Rejected));
        }