Example #1
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);
        }
Example #2
0
        public void CallsignParser_GetAllRouteCallsigns_Returns_The_Correct_Collection_Of_Callsigns()
        {
            var worksheet = new ExcelWorksheetData(TestContext);

            InitialiseStandingDataFromWorksheet(worksheet, countColumns: 3);

            var callsign         = worksheet.EString("Callsign");
            var operatorIcaoCode = worksheet.EString("OpCode");
            var result           = _CallsignParser.GetAllRouteCallsigns(callsign, operatorIcaoCode);

            var expectedText   = worksheet.String("Result") ?? "";
            var expectedResult = expectedText == "" ? new string[] {} : worksheet.Array <string>("Result").Select(r => r == null ? null : r.Trim()).ToArray();

            var message = String.Format("{0} -> {1}", callsign, expectedText);

            Assert.AreEqual(expectedResult.Length, result.Count, message);
            foreach (var expected in expectedResult)
            {
                Assert.IsTrue(result.Contains(expected), "Missing '{0}'. {1}", expected, message);
            }
        }
Example #3
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;

                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);
        }
Example #4
0
        private void TranscribeDatabaseRecordsToJson(List <BaseStationFlight> dbFlights, List <ReportFlightJson> jsonFlights, List <ReportAircraftJson> jsonAircraft, List <ReportAirportJson> jsonAirports, List <ReportRouteJson> jsonRoutes, RequestReceivedEventArgs args, Parameters parameters)
        {
            var aircraftIdMap = new Dictionary <int, int>();
            var airportMap    = new Dictionary <string, int>();
            var routeMap      = new Dictionary <string, int>();

            int rowNumber = parameters.FromRow < 1 ? 1 : parameters.FromRow + 1;

            foreach (var dbFlight in dbFlights)
            {
                var jsonFlight = AddReportFlightJson(dbFlight, jsonFlights, ref rowNumber);

                if (jsonAircraft != null)
                {
                    var dbAircraft = dbFlight.Aircraft;
                    if (dbAircraft == null)
                    {
                        jsonFlight.AircraftIndex = jsonAircraft.Count;
                        jsonAircraft.Add(new ReportAircraftJson()
                        {
                            IsUnknown = true
                        });
                    }
                    else
                    {
                        int aircraftIndex;
                        if (!aircraftIdMap.TryGetValue(dbAircraft.AircraftID, out aircraftIndex))
                        {
                            aircraftIndex = jsonAircraft.Count;
                            aircraftIdMap.Add(dbAircraft.AircraftID, aircraftIndex);
                            jsonAircraft.Add(CreateReportAircraftJson(dbAircraft, args));
                        }
                        jsonFlight.AircraftIndex = aircraftIndex;
                    }
                }

                int routeIndex = -1;
                if (!String.IsNullOrEmpty(dbFlight.Callsign) && !routeMap.TryGetValue(dbFlight.Callsign, out routeIndex))
                {
                    var operatorCode = dbFlight.Aircraft != null ? dbFlight.Aircraft.OperatorFlagCode : null;
                    foreach (var routeCallsign in _CallsignParser.GetAllRouteCallsigns(dbFlight.Callsign, operatorCode))
                    {
                        var sdmRoute = StandingDataManager.FindRoute(routeCallsign);
                        if (sdmRoute == null)
                        {
                            routeIndex = -1;
                        }
                        else
                        {
                            var jsonRoute = new ReportRouteJson()
                            {
                                FromIndex = BuildAirportJson(sdmRoute.From, airportMap, jsonAirports),
                                ToIndex   = BuildAirportJson(sdmRoute.To, airportMap, jsonAirports),
                            };
                            foreach (var stopover in sdmRoute.Stopovers)
                            {
                                int index = BuildAirportJson(stopover, airportMap, jsonAirports);
                                if (index != -1)
                                {
                                    jsonRoute.StopoversIndex.Add(index);
                                }
                            }

                            routeIndex = jsonRoutes.Count;
                            jsonRoutes.Add(jsonRoute);
                            routeMap.Add(dbFlight.Callsign, routeIndex);

                            break;
                        }
                    }
                }
                jsonFlight.RouteIndex = routeIndex;
            }
        }