Exemple #1
0
        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));
        }