private IEnumerable <Flight> parseResponseIntoFlight(FlightStatusResponse response) { if (response == null || response.appendix == null || response.appendix.airports == null) { return(new List <Flight>()); } // update airports foreach (FSAirport airport in response.appendix.airports) { var dbAirport = db.Airports.Find(airport.fs); if (dbAirport == null) { Airport a = new Airport(airport.fs); a.IATACode = airport.iata; a.Name = airport.name; a.Address = airport.street1; a.City = airport.city; a.State = airport.stateCode; a.PostalCode = airport.postalCode; a.Country = airport.countryName; dbAirport = a; db.Airports.Add(dbAirport); } } db.SaveChanges(); // parse flights List <Flight> flights = new List <Flight>(); foreach (FSFlightStatus status in response.flightStatuses) { Flight f = new Flight(); f.LastUpdated = DateTime.Now; f.FlightId = status.flightId; f.Carrier = status.carrierFsCode; f.FlightNumber = status.flightNumber; f.ScheduledDepartureDate = status.operationalTimes.scheduledGateDeparture.dateLocal; f.EstimatedDepartureDate = status.operationalTimes.estimatedGateDeparture.dateLocal; f.DepartureAirport = db.Airports.Find(status.departureAirportFsCode); f.ScheduledArrivalDate = status.operationalTimes.scheduledGateArrival.dateLocal; f.EstimatedArrivalDate = status.operationalTimes.estimatedGateArrival.dateLocal; f.ArrivalAirport = db.Airports.Find(status.arrivalAirportFsCode); f.Status = status.status; f.DepartureGate = status.airportResources.departureGate; f.ArrivalGate = status.airportResources.arrivalGate; f.DepartureTerminal = status.airportResources.departureTerminal; f.ArrivalTerminal = status.airportResources.arrivalTerminal; f.BaggageClaim = status.airportResources.baggage; flights.Add(f); } return(flights); }
public static DomainFlight ToDomainFlight(FlightStatusResponse flight) { var flights = flight.FlightStatusResource.Flights.Flight .Select(f => new DomainFlight { FlightId = f.MarketingCarrier.AirlineId + f.MarketingCarrier.FlightNumber + f.Arrival.ScheduledTimeLocal.DateTime, Departure = ToDomainAirportFlightStatus(f.Departure), Arrival = ToDomainAirportFlightStatus(f.Arrival), AirlineId = f.MarketingCarrier.AirlineId, FlightNumber = f.MarketingCarrier.FlightNumber } ).ToList(); if (flights.Any()) { return(flights.First()); } return(null); }