[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)); } }
[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())); }
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)); }