private void ProcessUpdatesAsync(FlightNode arrFlight, List <PTMRow> updateList) { logger.Trace(">>>>>>----------- Processing Updates"); logger.Info($"Processing updates for arrival flight {arrFlight.flightKey}"); foreach (PTMRow ptm in updateList) { bool result = flightUpdater.UpdateOrAddOrRemovePTMFromDepartureFlight(arrFlight, new FlightNode(ptm, "Departure", arrFlight.airportCodeIATA), ptm); if (result) { logger.Trace($"PTM Record Uppdate Sucess {arrFlight.ToString()}, {ptm.flightKey}"); } else { logger.Trace($"PTM Record Update Failure {arrFlight.ToString()}, {ptm.flightKey}"); } } logger.Trace("<<<<<<<<<----------- Processing Updates"); }
public Tuple <bool, FlightNode, XmlNode, bool> ClassifyFlightAndGetTransferChanges(XmlNode xmlRoot) { /* * Takes a FlightUpdated Notification messages and determines if there are any changes to the * Tl--TransferLoads table */ XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlRoot.OwnerDocument.NameTable); nsmgr.AddNamespace("ams", "http://www.sita.aero/ams6-xml-api-datatypes"); nsmgr.AddNamespace("amsmess", "http://www.sita.aero/ams6-xml-api-messages"); // Firstly, we are only interested in Arrival Flight Changes. FlightNode flight = new FlightNode(xmlRoot, nsmgr); DateTime lowerLimit = DateTime.Now.AddHours(Parameters.STO_LOWERLIMIT_HOURS); DateTime upperLimit = DateTime.Now.AddHours(Parameters.STO_UPPERLIMIT_HOURS); if (flight.sto < lowerLimit || flight.sto > upperLimit) { logger.Trace($"Flight outside window of interest {flight.sto} {flight.stoStr} Lower Limit: {lowerLimit} Upper Limit: {upperLimit} "); return(new Tuple <bool, FlightNode, XmlNode, bool>(false, flight, null, true)); } // The Flight is not an arrival, so stop processing if (!flight.IsArrival()) { logger.Trace("Flight was not an arrival"); return(new Tuple <bool, FlightNode, XmlNode, bool>(false, flight, null, false)); } XmlNode transferChanges; // Does the notification contain transfer changes? try { transferChanges = xmlRoot.SelectSingleNode(".//ams:FlightChanges/ams:TableValueChange[@propertyName='Tl--_TransferLoads']", nsmgr); } catch (Exception) { logger.Trace("No Transfer Changes Found"); return(new Tuple <bool, FlightNode, XmlNode, bool>(false, null, null, false)); } if (transferChanges == null) { logger.Trace("No Transfer Changes Found"); return(new Tuple <bool, FlightNode, XmlNode, bool>(false, null, null, false)); } logger.Trace("Arrival flight with transfer changes " + flight.ToString()); return(new Tuple <bool, FlightNode, XmlNode, bool>(true, flight, transferChanges, false)); }