TS - Bus objects updated + Service classes and forms added
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Net;
|
||||
using Sarand.Core.Xml;
|
||||
using Sarand.PatientMgr.Core.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Sarand.PatientMgr.Core.WebService
|
||||
{
|
||||
//=======================================================================
|
||||
public class SpmWebServiceResponse
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Definitions.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public class Config
|
||||
{
|
||||
public DateTime RequestStarted { get; set; } = DateTime.Now;
|
||||
public DateTime RequestCompleted { get; set; }
|
||||
public SacsHttpResponseData HttpResponseData { get; set; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
protected readonly Config config;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmWebServiceResponse (Config config)
|
||||
{
|
||||
this.config = config;
|
||||
ResponseData = SpmWindowsServiceCrypter.DecryptResponseData(config.HttpResponseData.Data);
|
||||
|
||||
try
|
||||
{
|
||||
// Identify the response element in the xml data.
|
||||
ResponseDoc = XDocument.Parse(ResponseData, LoadOptions.None);
|
||||
XElement rootElement = ResponseDoc.Root;
|
||||
if (rootElement.Name.LocalName.EndsWithCI("Response"))
|
||||
ResponseElement = rootElement;
|
||||
else if (rootElement.Name.LocalName.EqualsCI(SacsSoapUtils.GetElementName(SoapElementType.Envelope)))
|
||||
{
|
||||
SoapEnvelope = true;
|
||||
SoapPrefix = rootElement.GetNamespacePrefix();
|
||||
foreach (XElement soapElement in rootElement.Elements())
|
||||
{
|
||||
if (soapElement.Name.LocalName.EqualsCI(SacsSoapUtils.GetElementName(SoapElementType.Body)))
|
||||
{
|
||||
foreach (XElement bodyElement in soapElement.Elements())
|
||||
{
|
||||
if (bodyElement.Name.LocalName.EndsWithCI("Response"))
|
||||
{
|
||||
ResponseElement = bodyElement;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ResponseElement != null)
|
||||
{
|
||||
// Extract status code.
|
||||
XElement statusElement = ResponseElement.GetFirstChildElement(SpmWebServiceDfn.ElementName.Status);
|
||||
if (statusElement != null)
|
||||
{
|
||||
StatusCode = statusElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Code);
|
||||
// Extract messages.
|
||||
XElement messagesElement = statusElement.GetFirstChildElement(SpmWebServiceDfn.ElementName.Messages);
|
||||
if (messagesElement != null)
|
||||
{
|
||||
foreach (XElement messageElement in messagesElement.GetChildElements(SpmWebServiceDfn.ElementName.Message))
|
||||
{
|
||||
String context = messageElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Context);
|
||||
String code = messageElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Code);
|
||||
SaMessageLevel level = SacsSystem.GetMessageLevelFromCode(messageElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Level));
|
||||
SpmWebServiceMessage message = new SpmWebServiceMessage(context, code, messageElement.Value, level);
|
||||
Messages.Add(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception) { }
|
||||
}
|
||||
public SpmWebServiceResponse (SpmWebServiceResponse serviceResponse)
|
||||
{
|
||||
// Copied from another service reponse - don't re-intrepert properties.
|
||||
this.config = serviceResponse.config;
|
||||
// Structure.
|
||||
SoapEnvelope = serviceResponse.SoapEnvelope;
|
||||
SoapPrefix = serviceResponse.SoapPrefix;
|
||||
// Response.
|
||||
ResponseData = serviceResponse.ResponseData;
|
||||
ResponseDoc = serviceResponse.ResponseDoc;
|
||||
ResponseElement = serviceResponse.ResponseElement;
|
||||
// Status.
|
||||
StatusCode = serviceResponse.StatusCode;
|
||||
Messages = serviceResponse.Messages;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public DateTime RequestStarted { get { return config.RequestStarted; } }
|
||||
public DateTime RequestCompleted { get { return config.RequestCompleted; } }
|
||||
public SacsHttpResponseData HttpResponseData { get { return config.HttpResponseData; } }
|
||||
// Structure.
|
||||
public bool SoapEnvelope { get; }
|
||||
public String SoapPrefix { get; } = "";
|
||||
// Response.
|
||||
public String ResponseData { get; }
|
||||
public XDocument ResponseDoc { get; }
|
||||
public XElement ResponseElement { get; }
|
||||
// Status.
|
||||
public bool TaskCancelled { get; set; }
|
||||
public String StatusCode { get; } = "";
|
||||
public List<SpmWebServiceMessage> Messages { get; } = new List<SpmWebServiceMessage>();
|
||||
public String ErrorStateMessage { get; set; }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
Reference in New Issue
Block a user