示例#1
0
        [Route("api/reservation/extend")] // api/user/lot
        public IHttpActionResult ExtendUserReservation([FromBody, Required] ReservationRequestDTO request)
        {
            ReservationManager        _reservationManager = new ReservationManager();
            ResponseDTO <UserSpotDTO> response            = _reservationManager.ExtendUserReservation(request);

            if (response.Data != null)
            {
                return(Ok(response.Data));
            }
            else
            {
                ResponseDTO <HttpStatusCode> statusResponse = ResponseManager.ConvertErrorToStatus(response.Error);
                return(Content(statusResponse.Data, statusResponse.Error));
            }
        }
示例#2
0
        [Route("api/reservation/add")] // api/user/lot
        public IHttpActionResult ReserveSpot([FromBody, Required] ReservationRequestDTO request)
        {
            ReservationManager _reservationManager = new ReservationManager();
            ResponseDTO <bool> response            = _reservationManager.ReserveSpot(request);

            if (response.Data)
            {
                return(Ok("Successfully reserved: " + request.SpotId));
            }
            else
            {
                ResponseDTO <HttpStatusCode> statusResponse = ResponseManager.ConvertErrorToStatus(response.Error);
                return(Content(statusResponse.Data, statusResponse.Error));
            }
        }
        public IHttpActionResult GetSpotsByLot([FromBody, Required] ReservationRequestDTO request)
        {
            using (var dbcontext = new UserContext())
            {
                LotManagementManager lotManagementManager = new LotManagementManager(dbcontext);

                ResponseDTO <LotResponseDTO> response = lotManagementManager.GetAllSpotsByLot(request);

                if (response.Data != null)
                {
                    return(Ok(response.Data));
                }
                else
                {
                    ResponseDTO <HttpStatusCode> statusResponse = ResponseManager.ConvertErrorToStatus(response.Error);
                    return(Content(statusResponse.Data, statusResponse.Error));
                }
            }
        }
        public async Task <IActionResult> Order([FromBody] ReservationRequestDTO value)
        {
            var user = await userService.FindById(value.UserId);

            if (user == null)
            {
                return(NotFound($"Nenhum usuário encontrado com o ID: {value.UserId}."));
            }

            var book = await bookService.FindById(value.BookId);

            if (book == null)
            {
                return(NotFound($"Nenhum livro encontrado com o ID: {value.BookId}."));
            }

            var reservation = await reservationService.Order(book, user);

            return(Ok(reservation.ToReservationViewItem()));
        }
示例#5
0
        public ResponseDTO <LotResponseDTO> GetAllSpotsByLot(ReservationRequestDTO request)
        {
            // Check if sessionId is in Guid Format
            Guid sessionId;

            try
            {
                sessionId = Guid.Parse(request.SessionId);
            }
            catch (Exception)
            {
                return(new ResponseDTO <LotResponseDTO>()
                {
                    Data = null,
                    Error = "tokenString not a valid Guid"
                });
            }

            ResponseDTO <Session> sessionDTO = _sessionServices.GetSession(sessionId);

            // If session data is null, then an error occured
            if (sessionDTO.Data == null)
            {
                return(new ResponseDTO <LotResponseDTO>()
                {
                    Data = null,
                    Error = sessionDTO.Error
                });
            }

            // Check if LotId is formatted properly
            Guid lotId;

            try
            {
                lotId = Guid.Parse(request.LotId);
            }
            catch (Exception)
            {
                return(new ResponseDTO <LotResponseDTO>()
                {
                    Data = null,
                    Error = "OwnerId not in proper Guid format."
                });
            }

            // Get parking lot information for reading the parking lot map
            ResponseDTO <Lot> lotResponse = _lotManagementService.GetLotByLotId(lotId);

            if (lotResponse.Data == null)
            {
                return(new ResponseDTO <LotResponseDTO>()
                {
                    Data = null,
                    Error = lotResponse.Error
                });
            }

            ResponseDTO <Image> lotMap = _lotManagementService.GetLotImage(lotResponse.Data.MapFilePath);

            if (lotMap.Data == null)
            {
                return(new ResponseDTO <LotResponseDTO>()
                {
                    Data = null,
                    Error = lotMap.Error
                });
            }

            // Convert image to a byte array
            byte[] mapBytes;
            using (var ms = new MemoryStream())
            {
                lotMap.Data.Save(ms, lotMap.Data.RawFormat);
                mapBytes = ms.ToArray();
            }

            // Get the list of parking spots
            ResponseDTO <List <Spot> > spotsList = _lotManagementService.GetAllSpotsByLot(lotId);

            if (spotsList.Data == null)
            {
                return(new ResponseDTO <LotResponseDTO>()
                {
                    Data = null,
                    Error = spotsList.Error
                });
            }

            // Set up data to be returned
            LotResponseDTO lotResponseDTO = new LotResponseDTO()
            {
                SpotsList = spotsList.Data,
                LotMap    = mapBytes
            };

            return(new ResponseDTO <LotResponseDTO>()
            {
                Data = lotResponseDTO
            });
        }
        public ResponseDTO <bool> ReserveSpot(ReservationRequestDTO request)
        {
            // Check if all Guids are formatted properly
            Guid sessionId;

            try
            {
                sessionId = Guid.Parse(request.SessionId);
            }
            catch (Exception)
            {
                return(new ResponseDTO <bool>()
                {
                    Data = false,
                    Error = ErrorStrings.REQUEST_FORMAT
                });
            }

            Guid spotId;

            try
            {
                spotId = Guid.Parse(request.SpotId);
            }
            catch (Exception)
            {
                return(new ResponseDTO <bool>()
                {
                    Data = false,
                    Error = ErrorStrings.REQUEST_FORMAT
                });
            }

            ResponseDTO <Session> sessionDTO = _sessionServices.GetSession(sessionId);

            // If session data is null, then an error occured
            if (sessionDTO.Data == null)
            {
                return(new ResponseDTO <bool>()
                {
                    Data = false,
                    Error = sessionDTO.Error
                });
            }

            // Check that user has permission to use this function
            List <ClaimDTO> requiredClaims = new List <ClaimDTO>()
            {
                new ClaimDTO("Action", "ReserveParkingSpot")
            };
            ResponseDTO <Boolean> authResponse = _authorizationClient.Authorize(sessionDTO.Data.UserAccount.Username, requiredClaims);

            if (!authResponse.Data)
            {
                return(new ResponseDTO <bool>()
                {
                    Data = false,
                    Error = authResponse.Error
                });
            }

            // TODO: Check if vehicle exists in data store

            ReservationDTO reservationDTO = new ReservationDTO()
            {
                DurationInMinutes = request.DurationInMinutes,
                UserId            = sessionDTO.Data.UserAccount.Id,
                VehicleVin        = request.VehicleVin,
                SpotId            = spotId
            };

            _loggerService.LogAction(LogConstants.ACTION_ADD_RESERVATION, sessionDTO.Data.Id.ToString(), sessionDTO.Data.SessionId.ToString());
            return(_reservationServices.ReserveSpot(reservationDTO));
        }