public void ReportRouteJson_Constructor_Initialises_To_Known_State_And_Properties_Work() { var json = new ReportRouteJson(); TestUtilities.TestProperty(json, "FromIndex", 0, 1); TestUtilities.TestProperty(json, "ToIndex", 0, 1); Assert.AreEqual(0, json.StopoversIndex.Count); }
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; 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 sdmRoute = StandingDataManager.FindRoute(dbFlight.Callsign); 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); } } jsonFlight.RouteIndex = routeIndex; } }