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));
        }
Example #3
0
        public void Arrange()
        {
            _fixture = new Fixture();

            _validationResult  = _fixture.Create <CommitmentsV2.Domain.Entities.Reservations.ReservationValidationResult>();
            _validationRequest = _fixture.Create <ReservationValidationRequest>();

            _apiRequest = new ReservationValidationMessage();

            _requestMapper = new Mock <IOldMapper <ReservationValidationRequest, ReservationValidationMessage> >();
            _requestMapper.Setup(x => x.Map(It.Is <ReservationValidationRequest>(r => r == _validationRequest)))
            .ReturnsAsync(() => _apiRequest);

            _resultMapper = new Mock <IOldMapper <ReservationValidationResult, CommitmentsV2.Domain.Entities.Reservations.ReservationValidationResult> >();
            _resultMapper.Setup(x => x.Map(It.IsAny <ReservationValidationResult>())).ReturnsAsync(_validationResult);

            _apiClient = new Mock <IReservationsApiClient>();
            _apiClient.Setup(x =>
                             x.ValidateReservation(It.Is <ReservationValidationMessage>(r => r == _apiRequest), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new ReservationValidationResult());

            _reservationValidationService =
                new ReservationValidationService(_apiClient.Object, _requestMapper.Object, _resultMapper.Object);
        }