public FastTicket(TOFastTicket fastTicket, DatabaseContext _context) { SeatId = fastTicket.Seat.SeatId; Airline = _context.Airlines.Find(fastTicket.AirlineName); NewPrice = fastTicket.NewPrice; }
public async Task <IActionResult> PutFastTicket(int id, [FromBody] JObject Obj, [FromQuery] int version) { TOFastTicket fastTicket = Obj["fastTicket"].ToObject <TOFastTicket>(); bool occupied = Obj["occupied"].ToObject <bool>(); if (id != fastTicket.Seat.SeatId) { return(BadRequest()); } Flight tempFlight = await _context.Flights.FindAsync(fastTicket.Seat.FlightId); var success = false; if (tempFlight.Version != version) { return(Ok(new { success })); } tempFlight.Version++; _context.Entry(tempFlight).State = EntityState.Modified; FastTicket tempFastTicket = await _context.FastTickets.FindAsync(fastTicket.Seat.SeatId); Seat seat = await _context.Seats.Include(seat => seat.Flight).ThenInclude(flight => flight.Airline).FirstAsync(seat => seat.SeatId == fastTicket.Seat.SeatId); seat.Occupied = occupied; _context.Entry(seat).State = EntityState.Modified; try { await _context.SaveChangesAsync(); string userId = User.Claims.First(c => c.Type == "UserID").Value; var user = await _userManager.FindByIdAsync(userId); if (occupied == true) { FlightReservation flightReservation = new FlightReservation() { ReservationId = 0, Creator = user.UserName, FinalPrice = fastTicket.NewPrice, TimeOfCreation = DateTime.Now, VehicleReservationId = 0 }; FlightReservationDetail flightReservationDetail = new FlightReservationDetail() { FlightReservation = flightReservation, AirlineName = seat.Flight.Airline.Name, FlightReservationDetailId = 0, FlightId = seat.Flight.FlightId }; PassengerSeat passengerSeat = new PassengerSeat() { PassengerSeatId = 0, FlightReservationDetail = flightReservationDetail, SeatId = seat.SeatId, Username = user.UserName, Accepted = true, AirlineScored = false, FlightScored = false, Name = "", Surname = "", Passport = "" }; flightReservationDetail.PassengerSeats = new List <PassengerSeat>(); flightReservationDetail.PassengerSeats.Add(passengerSeat); flightReservation.FlightReservationDetails = new List <FlightReservationDetail>(); flightReservation.FlightReservationDetails.Add(flightReservationDetail); _context.FlightReservations.Add(flightReservation); _context.FastTickets.Remove(tempFastTicket); await _context.SaveChangesAsync(); } } catch (DbUpdateConcurrencyException) { if (!FastTicketExists(id)) { return(NotFound()); } else { throw; } } success = true; return(Ok(new { success })); }