public async Task <ActionResult <AdministratorFlightDTO> > PostFlight(AdministratorFlightDTO flight) { var flightDb = CreateOrUpdateFlightDb(flight); context.Flights.Add(flightDb); await context.SaveChangesAsync(); flight.Id = flightDb.Id; return(CreatedAtAction("PostFlight", new { id = flight.Id }, flight)); }
private Flight CreateOrUpdateFlightDb(AdministratorFlightDTO flight, Flight flightDb = null) { if (flightDb == null) { flightDb = new Flight(); } else { context.FlightPrices.RemoveRange(flightDb.Prices); context.SaveChanges(); } flightDb.AircraftId = flight.AircraftId; flightDb.ArrivalDateTime = flight.ArrivalDateTime; flightDb.CarrierId = flight.CarrierId; flightDb.DepartureDateTime = flight.DepartureDateTime; flightDb.DestinationAirportId = flight.DestinationAirportId; flightDb.OriginAirportId = flight.OriginAirportId; flightDb.Prices = new List <FlightPrice>(); var currency = context.Currencies.Find(flight.CurrencyId); if (currency != null) { foreach (var price in flight.Prices) { var flightPrice = new FlightPrice { Price = price.Price * (currency.IsDefault ? 1 : currency.ExchangeRate), TravelClass = price.TravelClass, TravelerType = price.TravelerType }; flightDb.Prices.Add(flightPrice); } } return(flightDb); }
public async Task <IActionResult> PutFlight(int id, AdministratorFlightDTO flight) { if (id != flight.Id) { return(BadRequest()); } var flightDb = context.Flights .Include(f => f.Prices) .Where(f => f.Id == id) .FirstOrDefaultAsync(); if (flightDb == null) { return(NotFound()); } CreateOrUpdateFlightDb(flight, await flightDb); await context.SaveChangesAsync(); return(NoContent()); }