162 lines
6.7 KiB
C#
162 lines
6.7 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Xml;
|
|
using System.Xml.Serialization;
|
|
using Kreta.EESZTInterface.eFT.Model;
|
|
using Kreta.EESZTInterface.eFT.Model.AllomanyResz.Request;
|
|
using Kreta.EESZTInterface.eFT.Model.IntezmenyiAllomanyLista.Request;
|
|
using Kreta.EESZTInterface.eFT.Model.SikeresCimzettAllomanyLetoltes.Request;
|
|
using Kreta.EESZTInterface.STS;
|
|
|
|
namespace Kreta.EESZTInterface.eFT
|
|
{
|
|
public class CreateSoap
|
|
{
|
|
private static string CreateSoapRequest<T>(string samlContent, T bo)
|
|
{
|
|
string idTs = "TS-" + Guid.NewGuid().ToString().Replace("-", "");
|
|
|
|
var xDoc = new XmlDocument();
|
|
|
|
XmlElement root = xDoc.CreateElement("soap", "Envelope", Namespaces.soap11Ns);
|
|
root.SetAttribute("xmlns:v1", Namespaces.allomanyPublikaloServiceV1Ns);
|
|
xDoc.AppendChild(root);
|
|
|
|
XmlElement head = xDoc.CreateElement("soap", "Header", Namespaces.soap11Ns);
|
|
root.AppendChild(head);
|
|
|
|
XmlElement sec = xDoc.CreateElement("wsse", "Security", Namespaces.wsseNs);
|
|
sec.SetAttribute("xmlns:wsu", Namespaces.wsuNs);
|
|
sec.SetAttribute("soap:mustUnderstand", "1");
|
|
head.AppendChild(sec);
|
|
|
|
XmlElement timestamp = xDoc.CreateElement("wsu", "Timestamp", Namespaces.wsuNs);
|
|
timestamp.SetAttribute("Id", Namespaces.wsuNs, idTs);
|
|
sec.AppendChild(timestamp);
|
|
|
|
XmlElement created = xDoc.CreateElement("wsu", "Created", Namespaces.wsuNs);
|
|
var now = DateTime.Now;
|
|
created.InnerText = now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ");
|
|
timestamp.AppendChild(created);
|
|
XmlElement expires = xDoc.CreateElement("wsu", "Expires", Namespaces.wsuNs);
|
|
expires.InnerText = now.ToUniversalTime().AddMinutes(5).ToString("yyyy-MM-ddTHH:mm:ssZ");
|
|
timestamp.AppendChild(expires);
|
|
|
|
sec.InnerXml += "{saml}";
|
|
|
|
XmlElement body = xDoc.CreateElement("soap", "Body", Namespaces.soap11Ns);
|
|
|
|
var ns = new XmlSerializerNamespaces();
|
|
ns.Add("v1", Namespaces.allomanyPublikaloServiceV1Ns);
|
|
var serializer = new XmlSerializer(typeof(T));
|
|
var sb = new StringBuilder();
|
|
var writer = new StringWriter(sb);
|
|
serializer.Serialize(writer, bo, ns);
|
|
writer.Close();
|
|
|
|
XmlDocument b = new XmlDocument();
|
|
b.LoadXml(sb.Replace(typeof(T).Name, $"v1:{typeof(T).Name}").ToString());
|
|
|
|
XmlElement boXml = (XmlElement)xDoc.ImportNode(b.DocumentElement, true);
|
|
boXml.Attributes.RemoveNamedItem("xmlns:v1");
|
|
body.AppendChild(boXml);
|
|
|
|
xDoc.DocumentElement.AppendChild(body);
|
|
|
|
return xDoc.DocumentElement.OuterXml.Replace("{saml}", samlContent);
|
|
}
|
|
|
|
public static string CreateGetIntezmenyiAllomanyLista(string samlContent, GetIntezmenyiAllomanyLista bo)
|
|
{
|
|
return CreateSoapRequest(samlContent, bo);
|
|
}
|
|
|
|
public static string CreateGetAllomanyresz(string samlContent, GetAllomanyResz bo)
|
|
{
|
|
return CreateSoapRequest(samlContent, bo);
|
|
}
|
|
|
|
public static string CreateSikeresLetoltes(string samlContent, SikeresCimzettAllomanyLetoltes bo)
|
|
{
|
|
return CreateSoapRequest(samlContent, bo);
|
|
}
|
|
|
|
private static BusinessMessageHeader GetBusinessMessageHeader(SamlAssertion samlAssertion, string clientUserId, string organizationId)
|
|
{
|
|
var applicationVersion = "1.0";
|
|
var applicationName = "eKreta";
|
|
return new BusinessMessageHeader
|
|
{
|
|
Initiator = new Initiator
|
|
{
|
|
UserId = samlAssertion.UserId,
|
|
UserName = samlAssertion.UserName,
|
|
ClientUserId = clientUserId,
|
|
ApplicationName = applicationName,
|
|
ApplicationId = $"{applicationName}:{applicationVersion}",
|
|
ApplicationFunction = "teszt",
|
|
OrganizationId = organizationId,
|
|
},
|
|
RepresentedUser = new RepresentedUser
|
|
{
|
|
ClientUserId = clientUserId,
|
|
UserId = samlAssertion.UserId,
|
|
UserName = samlAssertion.UserName,
|
|
},
|
|
Logging = new Logging
|
|
{
|
|
SubmittedAt = DateTime.Now,
|
|
}
|
|
};
|
|
}
|
|
|
|
public static GetIntezmenyiAllomanyLista GetIntezmenyiAllomanyListaBusinessObject(SamlAssertion samlAssertion, string clientUserId, string organizationId)
|
|
{
|
|
return new GetIntezmenyiAllomanyLista
|
|
{
|
|
IntezmenyiAllomanyListaRequest = new IntezmenyiAllomanyListaRequest
|
|
{
|
|
BusinessMessageHeader = GetBusinessMessageHeader(samlAssertion, clientUserId, organizationId),
|
|
IntezmenyiAllomanyListaRequestBusinessContent = new IntezmenyiAllomanyListaRequestBusinessContent
|
|
{
|
|
CimzettId = organizationId,
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
public static GetAllomanyResz GetAllomanyReszBusinessObject(SamlAssertion samlAssertion, string clientUserId, string organizationId, Guid publikusId, int sorszam)
|
|
{
|
|
return new GetAllomanyResz
|
|
{
|
|
AllomanyReszRequest = new AllomanyReszRequest
|
|
{
|
|
BusinessMessageHeader = GetBusinessMessageHeader(samlAssertion, clientUserId, organizationId),
|
|
AllomanyReszRequestBusinessContent = new AllomanyReszRequestBusinessContent
|
|
{
|
|
AllomanyPublikusId = publikusId,
|
|
AllomanyReszSorszam = sorszam,
|
|
CimzettId = organizationId,
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
public static SikeresCimzettAllomanyLetoltes GetSikeresCimzettAllomanyLetoltesBO(SamlAssertion samlAssertion, string clientUserId, string organizationId, Guid publikusId)
|
|
{
|
|
return new SikeresCimzettAllomanyLetoltes
|
|
{
|
|
SikeresAllomanyLetoltesRequest = new SikeresAllomanyLetoltesRequest
|
|
{
|
|
BusinessMessageHeader = GetBusinessMessageHeader(samlAssertion, clientUserId, organizationId),
|
|
SikeresAllomanyLetoltesRequestBusinessContent = new SikeresAllomanyLetoltesRequestBusinessContent
|
|
{
|
|
AllomanyPublikusId = publikusId,
|
|
CimzettId = organizationId,
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|