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); }
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; }
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; }
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); }
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; }
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")); } }
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); } }
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); }
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; }