public async Task <TicketDetailsDTO> GetDetailsAsync(int id) { var ticket = await _unitOfWork.Set <Ticket>() .DetailsAsync(id); if (ticket == null) { throw new NotFoundException("Ticket with such id was not found"); } return(TicketDetailsDTO.Create(ticket)); }
public TicketDetailsDTO GetDetails(int id) { var ticket = _unitOfWork.Set <Ticket>() .Details(x => x.Id == id).FirstOrDefault(); if (ticket == null) { throw new NotFoundException("Ticket with such id was not found"); } return(TicketDetailsDTO.Create(ticket)); }
public ActionResult <TicketDetailsDTO> GetTicketById(long id) { LoginToken <Customer> customer_token = DesirializeToken(); Ticket ticket = null; try { ticket = _loggedInCustomerFacade.GetTicketById(customer_token, id); if (ticket == null) { return(NotFound()); } } catch (WrongCustomerException) { return(Forbid()); } TicketDetailsDTO ticketDetailsDTO = _mapper.Map <TicketDetailsDTO>(ticket); return(Ok(ticketDetailsDTO)); }
public async Task Purchase_And_Get_New_Ticket() { await TestHelpers.Customer_Login(_httpClient); long flight_id = 1; var response = await _httpClient.PostAsync("api/tickets", new StringContent(JsonSerializer.Serialize(flight_id), Encoding.UTF8, MediaTypeNames.Application.Json)); var responseContent = await response.Content.ReadAsStringAsync(); TicketDetailsDTO ticketPostResult = JsonSerializer.Deserialize <TicketDetailsDTO>(responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); var linkGeneratorService = _serviceProvider.GetRequiredService <LinkGenerator>(); string createdPath = linkGeneratorService.GetPathByAction(nameof(CustomerFacadeController.GetTicketById), "CustomerFacade", new { id = ticketPostResult.Id }); Assert.AreEqual(response.Headers.Location.OriginalString, createdPath); Assert.AreEqual(ticketPostResult.Id, 1); Assert.AreEqual(ticketPostResult.Flight.Id, 1); Assert.AreEqual(ticketPostResult.Customer.Id, 1); var response2 = await _httpClient.GetAsync($"api/tickets/{ticketPostResult.Id}"); Assert.AreEqual(HttpStatusCode.OK, response2.StatusCode); var responseContent2 = await response2.Content.ReadAsStringAsync(); TicketDetailsDTO ticketGetResult = JsonSerializer.Deserialize <TicketDetailsDTO>(responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); TestHelpers.CompareProps(ticketGetResult, ticketPostResult); }
public ActionResult <TicketDetailsDTO> PurchaseTicket([FromBody] long flight_id) { LoginToken <Customer> customer_token = DesirializeToken(); Ticket ticket = null; string uri = null; Flight flight = _loggedInCustomerFacade.GetFlightById(flight_id); if (flight == null) { return(NotFound()); } if (flight.RemainingTickets < 1 || flight.DepartureTime <= DateTime.Now.AddMinutes(15)) { return(StatusCode(StatusCodes.Status410Gone)); } try { ticket = _loggedInCustomerFacade.PurchaseTicket(customer_token, flight); uri = _linkGenerator.GetPathByAction(nameof(GetTicketById), "customerfacade", new { id = ticket.Id }); } catch (RecordAlreadyExistsException) { return(Conflict()); } catch (TicketPurchaseFailedException) { return(StatusCode(StatusCodes.Status410Gone)); } TicketDetailsDTO ticketDetailsDTO = _mapper.Map <TicketDetailsDTO>(ticket); return(Created(uri, ticket)); }
public async Task Get_Ticket_Of_Another_Customer_Should_Return_Forbidden() { CreateCustomerDTO createCustomerDTO = new CreateCustomerDTO { FirstName = "Customer2", LastName = "Custom2", Address = null, PhoneNumber = "052-5555512", CreditCardNumber = null, User = new CreateUserDTO { UserName = "******", Password = "******", Email = "*****@*****.**", } }; await TestHelpers.Customer_Login(_httpClient, createCustomerDTO); long flight_id = 1; var response = await _httpClient.PostAsync("api/tickets", new StringContent(JsonSerializer.Serialize(flight_id), Encoding.UTF8, MediaTypeNames.Application.Json)); var responseContent = await response.Content.ReadAsStringAsync(); TicketDetailsDTO ticketPostResult = JsonSerializer.Deserialize <TicketDetailsDTO>(responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); await TestHelpers.Customer_Login(_httpClient); var response2 = await _httpClient.GetAsync($"api/tickets/{ticketPostResult.Id}"); Assert.AreEqual(HttpStatusCode.Forbidden, response2.StatusCode); }