Files
BeWoPlaner/Host/GkvAbrechnungClient.aspx.cs
Rene Evertz 8b6f9e9630 GetStatus FailFollowUpLogic
Zusätzliche Exception Handling
Test Tenant
2024-11-05 09:52:36 +01:00

115 lines
2.6 KiB
C#

using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.ServiceImplementations;
using BS.Shared;
using BS.Shared.AppSender;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Exceptions;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Host
{
public partial class GkvAbrechnungClient : Page
{
private readonly string INVALID_INPUT = "Ungültige Eingabe";
private string GkvSecretKey { get; set; } = ConfigurationManager.AppSettings.Get("GkvSecretKey");
public GkvRequestDC GkvRequest { get; set; }
public void Sleep() => Thread.Sleep(5000);
protected void Page_Load(object sender, EventArgs e)
{
try
{
//https://app5.bewoplaner.de/Host/GkvAbrechungServer?tenant=12345
var str = new StreamReader(Request.InputStream).ReadToEnd();
GkvRequest = GkvSender.DeserializeRequest<GkvRequestDC>(str, SendInvalidInputResponse);
switch (GkvRequest.Type)
{
case RequestType.GkvClientResult:
ClientResult(GkvSender.DeserializeRequest<GkvClientResultRequestDC>(str, SendInvalidInputResponse));
return;
default:
SendErrorResponse("RequestType unbekannt.");
return;
}
}
catch (ThreadAbortException eee)
{
}
catch (Exception ex)
{
var ex_text = ex.Message + "\n" + ex.StackTrace;
SendErrorResponse(ex_text);
}
}
private void ClientResult(GkvClientResultRequestDC req)
{
if (GkvSecretKey is null)
SendErrorResponse(INVALID_INPUT + " 1");
if (GkvSecretKey != req.GkvSecretKey)
SendErrorResponse(INVALID_INPUT + " 2");
if (req.ResultDCs is null || !req.ResultDCs.Any())
SendInvalidInputResponse();
// Response
var response = new GkvResponseDC(false);
try
{
var service = new AccountingServiceImp();
service.HandleGkvServerResults(req.ResultDCs);
response.Success = true;
}
catch (GkvException e)
{
response.Message = e.Message;
}
catch (Exception e)
{
response.Message = e.Message;
}
SendResponse(response);
}
#region Senden
private void SendInvalidInputResponse() => SendErrorResponse(INVALID_INPUT);
private void SendErrorResponse(string message)
{
var response = new GkvResponseDC(false, message);
Sleep();
SendResponse(GkvSender.SerializeResponse(response));
}
private void SendResponse(GkvResponseDC res) => SendResponse(GkvSender.SerializeResponse(res));
private void SendResponse(string str)
{
Response.Write(str);
Response.End();
}
#endregion
}
}