Example #1
0
        private void parseStartAndEndDates(BookingAnalysis booking, XmlNode productTypeNode, XmlNamespaceManager nsMgr, string nsPrefix)
        {
            var timeSlotNode = productTypeNode?.SelectSingleNode($"descendant::{nsPrefix}TimeSlots/{nsPrefix}TimeSlot", nsMgr);

            booking.StartDate = timeSlotNode?.Attributes[XmlTokens.START_DATE]?.Value ?? string.Empty;
            booking.EndDate   = timeSlotNode?.Attributes[XmlTokens.END_DATE]?.Value ?? string.Empty;
        }
        private ContextMenuStrip createContextMenuForBookingNode(TreeNode node, BookingAnalysis booking)
        {
            var contextMenuStrip = CreateCommonContextMenuStrip(node);

            contextMenuStrip.Items.Add(CreateCopyToClipboardMenuItem("Copy raw XML to Clipboard", booking.RawXml));
            return(contextMenuStrip);
        }
Example #3
0
        private void parseCustomer(BookingAnalysis booking, XmlDocument xmlDoc, XmlNamespaceManager nsMgr, string nsPrefix)
        {
            var firstNameNode = xmlDoc.SelectSingleNode($"//{nsPrefix}Customer/{nsPrefix}PersonName/{nsPrefix}GivenName", nsMgr);

            booking.CustomerFirstName = firstNameNode?.InnerText ?? string.Empty;

            var lastNameNode = xmlDoc.SelectSingleNode($"//{nsPrefix}Customer/{nsPrefix}PersonName/{nsPrefix}Surname", nsMgr);

            booking.CustomerLastName = lastNameNode?.InnerText ?? string.Empty;
        }
Example #4
0
        private void parseProviderAndDistributor(BookingAnalysis booking, XmlDocument xmlDoc, XmlNamespaceManager nsMgr, string nsPrefix)
        {
            var firstProviderNode = xmlDoc.SelectSingleNode($"//{nsPrefix}ProviderID_List/{nsPrefix}ID", nsMgr);

            booking.PrimaryProvider = firstProviderNode?.InnerText;
            booking.ProviderCount   = xmlDoc.SelectNodes($"//{nsPrefix}ProviderID_List/{nsPrefix}ID", nsMgr)?.Count ?? 0;

            var companyNode = xmlDoc.SelectSingleNode($"//{nsPrefix}POS/{nsPrefix}Source/{nsPrefix}BookingChannel/{nsPrefix}CompanyName", nsMgr);

            booking.DistributorShortName = companyNode?.Attributes[XmlTokens.DISTRIBUTOR]?.Value ?? string.Empty;
        }
Example #5
0
        private void parseProductAndExtras(BookingAnalysis booking, XmlDocument xmlDoc, XmlNamespaceManager nsMgr, string nsPrefix)
        {
            var productTypeNode = xmlDoc.SelectSingleNode($"//{nsPrefix}ProductTypeRsrvs", nsMgr);

            booking.ChannelCommission = productTypeNode?.Attributes[XmlTokens.CHANNEL_COMMISSION]?.Value ?? string.Empty;
            booking.PaymentOption     = productTypeNode?.Attributes[XmlTokens.PAYMENT_OPTION]?.Value ?? string.Empty;
            booking.AmountPaid        = productTypeNode?.Attributes[XmlTokens.PAYMENT_AMOUNT]?.Value ?? string.Empty;

            parseProduct(booking, productTypeNode, nsMgr, nsPrefix);
            parseExtras(booking, productTypeNode, nsMgr, nsPrefix);
            parseStartAndEndDates(booking, productTypeNode, nsMgr, nsPrefix);
        }
Example #6
0
        private void parseProduct(BookingAnalysis booking, XmlNode productTypeNode, XmlNamespaceManager nsMgr, string nsPrefix)
        {
            var productNode = productTypeNode?.SelectSingleNode($"descendant::{nsPrefix}ProductTypeRsrv/{nsPrefix}ProductType", nsMgr);

            booking.ProductId = productNode?.Attributes[XmlTokens.PRODUCT_ID]?.Value ?? string.Empty;
            var productNameNode = productNode?.SelectSingleNode($"descendant::{nsPrefix}Name", nsMgr);

            booking.ProductName = productNameNode?.InnerText ?? string.Empty;

            var productTotalNode = productTypeNode?.SelectSingleNode($"descendant::{nsPrefix}TotalRate", nsMgr);

            booking.ProductTotal = productTotalNode?.Attributes[XmlTokens.PRODUCT_TOTAL]?.Value ?? string.Empty;
        }
Example #7
0
        public bool Parse(string lineText)
        {
            BookingAnalysis = null;
            bool parsingDone;
            var  parsed = _xmlParser.Parse(lineText, out parsingDone);

            if (parsed)
            {
                if (parsingDone)
                {
                    BookingAnalysis = parseBooking(_xmlParser.OutputXmlString);
                }
            }
            return(parsed);
        }
        private void createConfirmationNodes(BookingAnalysis booking, TreeNode bookingNode)
        {
            if (booking.Confirmation != null)
            {
                var referenceNode = CreateNodeWithCommonContextMenuStrip($"Reference: {booking.Confirmation.Reference}");
                bookingNode.Nodes.Add(referenceNode);

                var obxRefNode = CreateNode($"OBX Ref: {booking.Confirmation.ObxReference}");
                if (!string.IsNullOrWhiteSpace(booking.Confirmation.ObxReference))
                {
                    ContextMenuStrips.Add(obxRefNode, CreateCommonContextMenuStrip(obxRefNode));
                }
                bookingNode.Nodes.Add(obxRefNode);
            }
            else
            {
                bookingNode.Nodes.Add(CreateNode("No reservation confirmation data found"));
            }
        }
Example #9
0
        private void parseExtras(BookingAnalysis booking, XmlNode productTypeNode, XmlNamespaceManager nsMgr, string nsPrefix)
        {
            var extrasMainNode = productTypeNode?.SelectSingleNode($"descendant::{nsPrefix}Supplements", nsMgr);

            booking.ExtrasTotal = extrasMainNode?.Attributes[XmlTokens.EXTRAS_TOTAL]?.Value ?? string.Empty;

            var extraNodes = productTypeNode?.SelectNodes($"descendant::{nsPrefix}Supplement", nsMgr);

            if (extraNodes == null)
            {
                return;
            }

            foreach (XmlNode extraNode in extraNodes)
            {
                Extra extra = createExtraFromNode(extraNode);
                parseSelectedNightsOfExtra(extra, extraNode, nsMgr, nsPrefix);
                booking.Extras.Add(extra);
            }
        }
Example #10
0
        private BookingAnalysis parseBooking(string bookingText)
        {
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(bookingText);

            XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmlDoc.NameTable);
            var evNamespace           = "ev";

            nsMgr.AddNamespace(evNamespace, XmlTokens.NS_EVIIVO);
            var evPrefix = evNamespace + ":";

            var booking = new BookingAnalysis();

            parseHeaderData(booking, xmlDoc);
            parseProviderAndDistributor(booking, xmlDoc, nsMgr, evPrefix);
            parseProductAndExtras(booking, xmlDoc, nsMgr, evPrefix);
            parseCustomer(booking, xmlDoc, nsMgr, evPrefix);
            booking.RawXml = bookingText;
            return(booking);
        }
Example #11
0
 private void parseHeaderData(BookingAnalysis booking, XmlDocument xmlDoc)
 {
     booking.TransactionId = xmlDoc.DocumentElement.Attributes[XmlTokens.CLIENT_TRANSACTION_ID]?.Value ?? string.Empty;
     booking.Timestamp     = xmlDoc.DocumentElement.Attributes[XmlTokens.TIMESTAMP]?.Value ?? string.Empty;
 }