/// <summary>
        /// Fetches the details for a single aircraft.
        /// </summary>
        /// <param name="fetchedDetail"></param>
        /// <returns></returns>
        protected override AircraftDetail DoFetchAircraft(AircraftFetcher <string, AircraftDetail> .FetchedDetail fetchedDetail)
        {
            var databaseAircraft = _AutoConfigDatabase.Database.GetAircraftByCode(fetchedDetail.Aircraft.Icao24);
            var onlineAircraft   = _AircraftOnlineLookupManager.Lookup(fetchedDetail.Aircraft.Icao24, databaseAircraft, searchedForBaseStationAircraft: true);

            return(ApplyDatabaseRecord(fetchedDetail.Detail, databaseAircraft, onlineAircraft, fetchedDetail.Aircraft, fetchedDetail.IsFirstFetch));
        }
Beispiel #2
0
        /// <summary>
        /// See base docs.
        /// </summary>
        /// <param name="fetchedDetail"></param>
        /// <returns></returns>
        protected override CallsignRouteDetail DoFetchAircraft(AircraftFetcher <CallsignRouteFetcher.Key, CallsignRouteDetail> .FetchedDetail fetchedDetail)
        {
            var key    = fetchedDetail.Key;
            var detail = fetchedDetail.Detail;

            if (!String.IsNullOrEmpty(key.Icao24) && !String.IsNullOrEmpty(key.Callsign))
            {
                var callsignUsed = key.Callsign;
                var parsed       = new Callsign(callsignUsed);

                var airlines      = _StandingDataManager.FindAirlinesForCode(parsed.Code);
                var isPositioning = airlines.Any(r => r.IsPositioningFlightNumber(parsed.TrimmedNumber));
                var isCharter     = airlines.Any(r => r.IsCharterFlightNumber(parsed.TrimmedNumber));

                Route route = null;
                if (!isPositioning && !isCharter)
                {
                    var callsigns = _CallsignParser.GetAllRouteCallsigns(key.Callsign, key.OperatorIcao);
                    foreach (var callsign in callsigns)
                    {
                        callsignUsed = callsign;
                        route        = _StandingDataManager.FindRoute(callsignUsed);
                        if (route != null)
                        {
                            break;
                        }
                    }
                    if (route == null)
                    {
                        callsignUsed = key.Callsign;
                    }
                }

                detail = new CallsignRouteDetail()
                {
                    Callsign            = key.Callsign,
                    UsedCallsign        = callsignUsed,
                    Icao24              = key.Icao24,
                    Route               = route,
                    IsCharterFlight     = isCharter,
                    IsPositioningFlight = isPositioning,
                };

                OnFetched(new EventArgs <CallsignRouteDetail>(detail));
            }

            return(detail);
        }
        /// <summary>
        /// See base docs.
        /// </summary>
        /// <param name="fetchedDetail"></param>
        /// <returns></returns>
        protected override CallsignRouteDetail DoFetchAircraft(AircraftFetcher <CallsignRouteFetcher.Key, CallsignRouteDetail> .FetchedDetail fetchedDetail)
        {
            var key    = fetchedDetail.Key;
            var detail = fetchedDetail.Detail;

            if (!String.IsNullOrEmpty(key.Icao24) && !String.IsNullOrEmpty(key.Callsign))
            {
                var callsignUsed = key.Callsign;

                Route route     = null;
                var   callsigns = _CallsignParser.GetAllRouteCallsigns(key.Callsign, key.OperatorIcao);
                foreach (var callsign in callsigns)
                {
                    callsignUsed = callsign;
                    route        = _StandingDataManager.FindRoute(callsignUsed);
                    if (route != null)
                    {
                        break;
                    }
                }
                if (route == null)
                {
                    callsignUsed = key.Callsign;
                }

                detail = new CallsignRouteDetail()
                {
                    Callsign     = key.Callsign,
                    UsedCallsign = callsignUsed,
                    Icao24       = key.Icao24,
                    Route        = route,
                };

                OnFetched(new EventArgs <CallsignRouteDetail>(detail));
            }

            return(detail);
        }