using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; using System.Text; using static Saxonite.Net.Standard.Base.Bus.SaxUserConfig; using System.Xml.Linq; namespace Saxonite.Net.Standard.Base.Data { //========================================================================== public class SaxConfigData { //------------------------------------------------------------------- // Definitions. private static readonly String ElementName_Config = "Config"; private static readonly String ElementName_Profile = "Profile"; private static readonly String ElementName_Eligibility = "Eligibility"; private static readonly String ElementName_HideInfo = "HideInfo"; //------------------------------------------------------------------- /// Profile settings. public class ProfileData { //--------------------------------------------------------------- /// Eligibility settings. public class EligibilityData { /// Hide the eligbiility information tip. public bool HideInfo { get; set; } } public EligibilityData Eligibility { get; set; } = new EligibilityData(); //--------------------------------------------------------------- /// Serialise to XML. public static String ToXml(ProfileData profile) { String fn = typeof(ProfileData).FullName + ".GetConfigData"; try { XDocument doc = new XDocument(); XElement configElement = doc.AppendElement(ElementName_Config); // Profile. XElement profileElement = configElement.AppendElement(ElementName_Profile); // Profile - Eligibility. XElement eligibilityElement = profileElement.AppendElement(ElementName_Eligibility); if (profile.Eligibility.HideInfo) eligibilityElement.AppendElement(ElementName_HideInfo, "1"); return doc.GetXml(); } catch (Exception exc) { SaLogger.Warn(fn + " " + ExceptionUtil.GetLogMessage(exc)); } return ""; } //--------------------------------------------------------------- /// Deserialise from XML. public static ProfileData FromXml(String configData) { String fn = typeof(ProfileData).FullName + ".ExtractConfig"; ProfileData profile = new ProfileData(); if (StringUtil.IsEmpty(configData)) return profile; try { // Load XML data. // NB Serialised data has 'Config' as root element XDocument doc = XDocument.Parse(configData); XElement rootElement = doc.Root; foreach (XElement rootChildElement in rootElement.GetChildElements()) { String rootChildElementName = rootChildElement.GetLocalName(); if (rootChildElementName.EqualsCI(ElementName_Profile)) { // Profile. XElement profileElement = rootChildElement; foreach (XElement profileChildElement in profileElement.GetChildElements()) { String profileChildElementName = profileChildElement.GetLocalName(); if (profileChildElementName.EqualsCI(ElementName_Eligibility)) { // Profile - Eligibility. XElement eligibilityElement = profileChildElement; String hideInfo = eligibilityElement.GetChildText(ElementName_HideInfo); profile.Eligibility.HideInfo = StringUtil.ToBool(hideInfo); } else SaLogger.Warn(fn + " Unexpected 'Profile' child element: " + profileChildElementName); } } else SaLogger.Warn(fn + " Unexpected 'Root' child element: " + rootChildElementName); } } catch (Exception exc) { SaLogger.Warn(fn + " " + ExceptionUtil.GetLogMessage(exc)); } return profile; } //--------------------------------------------------------------- } //------------------------------------------------------------------- } //========================================================================== }