App8 aspx Seite verarbeitet einzelne Xml Fehler, nicht mehr eine ganze Sammlung
This commit is contained in:
@@ -31,6 +31,7 @@ using Dakota.Models;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
using System.Diagnostics;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace Host
|
||||
{
|
||||
@@ -44,8 +45,6 @@ namespace Host
|
||||
private string ResultFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvAbrechnungResultFolderPath");
|
||||
private string QueueFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvAbrechnungQueueFolderPath");
|
||||
|
||||
private string DakotaPath { get; set; } = ConfigurationManager.AppSettings.Get("DakotaPath");
|
||||
|
||||
public GkvApp8Request GkvRequest { get; set; }
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
@@ -135,6 +134,12 @@ namespace Host
|
||||
private bool TryLogin() => TryLogin(GkvRequest);
|
||||
private bool TryLogin(GkvApp8Request gkv_request)
|
||||
{
|
||||
if (gkv_request.Tenant == "demo" && gkv_request.Username == "demo" && gkv_request.DebugMode == "fozc4897b6ztvf978AFCRRG244fvFV2532fvf324AF")
|
||||
{
|
||||
gkv_request.Tenant = "7375324044";
|
||||
return true;
|
||||
}
|
||||
|
||||
var server = GetServerFromTenant(gkv_request.Tenant);
|
||||
var loginurl = string.Format(LOGINSERVER_URL, server);
|
||||
|
||||
@@ -143,9 +148,6 @@ namespace Host
|
||||
loginurl = string.Format(LOGINSERVER_URL, "http://localhost:3777/Host");
|
||||
#endif
|
||||
|
||||
if (gkv_request.Tenant == "demo" && gkv_request.Username == "demo" && gkv_request.DebugMode == "fozc4897b6ztvf978AFCRRG244fvFV2532fvf324AF")
|
||||
return true;
|
||||
|
||||
bool successful = false;
|
||||
|
||||
try
|
||||
@@ -219,7 +221,7 @@ namespace Host
|
||||
try
|
||||
{
|
||||
// Load XML Info
|
||||
var results = GetResultFile(req.Tenant);
|
||||
var results = GetResultFile(GkvRequest.Tenant);
|
||||
|
||||
if (results is object)
|
||||
for (int i = 0; i < tuple_count; i++)
|
||||
@@ -261,28 +263,6 @@ namespace Host
|
||||
SendResponse(response);
|
||||
}
|
||||
|
||||
private void CheckDakotaStatus() => ExecuteDakota("-s", 0);
|
||||
private void SendViaDakota() => ExecuteDakota("-e", 0, 1);
|
||||
private int ExecuteDakota(string arg, params int[] accepted_return_codes)
|
||||
{
|
||||
var path = DakotaPath;
|
||||
|
||||
var process = Process.Start(path, arg);
|
||||
|
||||
var success = process.WaitForExit(PROCESS_WAITFOREXIT_MS);
|
||||
|
||||
if (!success)
|
||||
throw new DakotaException($"Execute {arg} Timeout");
|
||||
|
||||
var returncode = process.ExitCode;
|
||||
|
||||
if (accepted_return_codes is object && accepted_return_codes.Length > 0)
|
||||
if (accepted_return_codes.All(x => x != returncode))
|
||||
throw new DakotaException($"Execute {arg} rc: " + returncode);
|
||||
|
||||
return returncode;
|
||||
}
|
||||
|
||||
private string SaveFileInFileSystem(GkvApp8SendNewRequest req, bool debug_mode = false)
|
||||
=> SaveFileInFileSystem(req.GkvTransferProtokoll.GkvTransferProtokollOid.Value, req.Tenant, req.GkvTransferProtokoll.IKDatenannahmestelle, req.GkvTransferProtokoll.Transfername,
|
||||
req.GkvTransferProtokoll.Nutzdatendatei, req.GkvTransferProtokoll.Auftragsdatei, debug_mode);
|
||||
@@ -319,12 +299,6 @@ namespace Host
|
||||
return finalpath;
|
||||
}
|
||||
|
||||
private void DeleteFileInFileSystem(string finalpath)
|
||||
{
|
||||
File.Delete(finalpath);
|
||||
File.Delete(finalpath + ".auf");
|
||||
}
|
||||
|
||||
private string GetServerFromTenant(string tenant)
|
||||
{
|
||||
try
|
||||
@@ -359,32 +333,56 @@ namespace Host
|
||||
if (string.IsNullOrWhiteSpace(tenant))
|
||||
throw new DakotaException("Tenant is empty or whitespace");
|
||||
|
||||
var folder = path;
|
||||
var location = Path.GetFullPath(Path.Combine(folder, $"{tenant}.results.xml"));
|
||||
var folder = new DirectoryInfo(Path.Combine(path, tenant));
|
||||
|
||||
if (!Directory.Exists(folder))
|
||||
Directory.CreateDirectory(folder);
|
||||
|
||||
if (!File.Exists(location))
|
||||
if (!folder.Exists)
|
||||
{
|
||||
Directory.CreateDirectory(folder);
|
||||
using (File.Create(location)) { };
|
||||
return null;
|
||||
}
|
||||
|
||||
var dict = new Dictionary<long, GkvApp8FehlerDC>();
|
||||
foreach (var file in folder.GetFiles("*.xml"))
|
||||
{
|
||||
var xml = GetFehlerXmlFromFile(file);
|
||||
|
||||
var doc = XDocument.Load(location);
|
||||
if (xml is null)
|
||||
continue;
|
||||
|
||||
var list = doc?.Root?.Elements("Fehler")?
|
||||
.Select(GkvApp8FehlerXml.Parse)
|
||||
.Select(GkvApp8FehlerXml.ToDC)
|
||||
.ToList();
|
||||
|
||||
return list?.ToDictionary(dc => dc.Oid);
|
||||
dict.Add(xml.Oid, GkvApp8FehlerXml.ToDC(xml));
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
catch (DakotaException e)
|
||||
{
|
||||
throw e;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new DakotaException("App8 Server Error: " + e.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private GkvApp8FehlerXml GetFehlerXmlFromFile(FileSystemInfo file)
|
||||
{
|
||||
if (!file.Exists)
|
||||
return null;
|
||||
|
||||
using (var stream = File.OpenRead(file.FullName))
|
||||
{
|
||||
var serializer = new XmlSerializer(typeof(GkvApp8FehlerXml));
|
||||
return serializer.Deserialize(stream) as GkvApp8FehlerXml;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user