예제 #1
0
        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));
        }
예제 #2
0
        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);
        }
예제 #3
0
        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());
        }