/// <summary>
        /// XMLs this instance.
        /// </summary>
        /// <returns></returns>
        public string Xml()
        {
            UPXmlMemoryWriter xmlWriter = new UPXmlMemoryWriter();

            this.Serialize(xmlWriter);
            return(xmlWriter.XmlContentString());
        }
        /// <summary>
        /// Offlines the request XML.
        /// </summary>
        /// <returns></returns>
        public string OfflineRequestXml()
        {
            List <UPOfflineRequest> conflictRequests = this.ConflictRequests;
            UPXmlMemoryWriter       writer           = new UPXmlMemoryWriter();

            writer.WriteElementStart("Requests");
            if (conflictRequests != null)
            {
                foreach (UPOfflineRequest request in conflictRequests)
                {
                    request.Serialize(writer);
                }
            }

            writer.WriteElementEnd();
            return(writer.XmlContentString());
        }
        /// <summary>
        /// Calculates the client report from cached result.
        /// </summary>
        /// <returns></returns>
        public string CalcClientReportFromCachedResult()
        {
            int      count        = this.ClientReports.Count;
            string   xslString    = string.Empty;
            TimeSpan timeInterval = DateExtensions.TimeIntervalSinceReferenceDate(DateTime.UtcNow);

            if (!string.IsNullOrEmpty(this.XslName))
            {
                //string xslFileName = ServerSession.CurrentSession.FileStore.ImagePathForName(this.XslName);
                //xslFileName = xslFileName.StringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding);
                //xslString = $"<?xml-stylesheet type=\"text/xsl\" href=\"{xslFileName}?time={timeInterval}\"?>";
            }

            UPXmlMemoryWriter writer = new UPXmlMemoryWriter();

            if (!string.IsNullOrEmpty(this.RootXmlName))
            {
                writer.WriteElementStart(this.RootXmlName);
            }
            else
            {
                writer.WriteElementStart("Results");
            }

            for (int i = 0; i < count; i++)
            {
                object result = this.resultsForClientReports[i];
                if (result != null)
                {
                    UPWebContentClientReport clientReport = this.ClientReports[i];
                    ((UPCRMResult)result).SerializeRootElementName(writer, clientReport.RootNodeName);
                }
            }

            //for (int j = 0; j < signatureImageTagNames.Count && j < signaturePathNames.Count; j++)
            //{
            //    writer.WriteElementValue(signatureImageTagNames[j], $"{signaturePathNames[j]}?time={timeInterval}");
            //}

            writer.WriteLocaleSettingsElement();
            writer.WriteElementEnd();
            return($"<?xml version=\"1.0\" encoding=\"UTF-8\"?>{xslString}{writer.XmlContentStringAmpDecoded()}");
        }