Example #1
0
        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);
        }