BuildMatchingFlightPlan(string id, FlightPlan flightPlan) { var matchingFlight = await _flightContext.FlightItems.Where(x => x.FlightId == flightPlan.FlightId) .FirstOrDefaultAsync(); var matchingInitialLocation = await _flightContext.InitialLocationItems .Where(x => x.FlightPlanId == flightPlan.Id).FirstOrDefaultAsync(); InitialLocationData initialData = new InitialLocationData() { Longitude = matchingInitialLocation.Longitude, Latitude = matchingInitialLocation.Latitude, DateTime = matchingInitialLocation.DateTime }; IEnumerable <Segment> matchingSegments = await _flightContext.SegmentItems.Where (x => x.FlightPlanId == flightPlan.Id).ToListAsync(); IEnumerable <SegmentData> matchingSegmentData = BuildMatchingSegmentData(matchingSegments); var flightPlanData = new FlightPlanData { Passengers = flightPlan.Passengers, CompanyName = flightPlan.CompanyName, InitialLocation = initialData, Segments = matchingSegmentData }; return(flightPlanData); }
/* * Parsing the received json into the FlightPlanData object */ private FlightPlanData CreateFlightPlanDataFromJson(dynamic obj) { FlightPlanData newFlightPlanData = BuildInitialFlightPlanDataObject(obj); dynamic segments = obj["segments"]; IEnumerable <SegmentData> segmentList = new List <SegmentData>(); foreach (var segment in segments) { double segmentLongitude = double.Parse(segment["longitude"].ToString()); double segmentLatitude = double.Parse(segment["latitude"].ToString()); int timeSpanSeconds = int.Parse(segment["timespan_seconds"].ToString()); SegmentData newSegment = new SegmentData() { Longitude = segmentLongitude, Latitude = segmentLatitude, TimeSpanSeconds = timeSpanSeconds }; segmentList = segmentList.Append(newSegment); } newFlightPlanData.Segments = segmentList; return(newFlightPlanData); }
/* * Creating an initial FlightPlanData object which will be filled with the remaining fiels later */ private FlightPlanData BuildInitialFlightPlanDataObject(dynamic obj) { double longitude = double.Parse(obj["initial_location"]["longitude"].ToString()); double latitude = double.Parse(obj["initial_location"]["latitude"].ToString()); DateTime dateTime = obj["initial_location"]["date_time"]; FlightPlanData newFlightPlanData = new FlightPlanData() { Passengers = int.Parse(obj["passengers"].ToString()), CompanyName = obj["company_name"].ToString(), InitialLocation = new InitialLocationData() { Longitude = longitude, Latitude = latitude, DateTime = dateTime } }; return(newFlightPlanData); }
/* * Getting flights from external servers using a http client */ private async Task <FlightPlanData> GetExternalFlightPlan(string id, Flight flight) { var _apiUrl = flight.OriginServer + "/api/FlightPlan/" + flight.FlightId; var _baseAddress = flight.OriginServer; using (var client = _clientFactory.CreateClient()) { try { var result = await client.GetStringAsync(_apiUrl); dynamic value = JObject.Parse(result); FlightPlanData externalFlightPlanData = CreateFlightPlanDataFromJson(value); return(externalFlightPlanData); } catch (Exception e) { Console.WriteLine(e.ToString()); return(null); } } }
public FlightPlanUpdatedEventArgs(FlightPlanData flightPlan) { FlightPlan = flightPlan; }