Files
BeWoPlaner/Host/GkvAbrechnungClient.aspx.cs
Rene Evertz 2832bb9c5e Merge branch 'master' into feature_rene_18_ai - kein kommentar...
# Conflicts:
#	BeWo/BeWo.csproj
#	BeWo/BeWoApp.xaml.cs
#	BeWo/ServiceProxy/GeneratedAiEnhancedService.cs
#	BeWo/Services/BeWoControlFactory.cs
#	BeWo/Services/BeWoWindowFactory.cs
#	BeWo/Services/BeWoWindowService.cs
#	BeWo/Services/IControlFactory.cs
#	BeWo/Services/IWindowFactory.cs
#	BeWo/Services/IWindowService.cs
#	BeWo/View/BeWoFileView.xaml
#	BeWo/View/Detail/Report/AbwesenheitsView.xaml
#	BeWo/View/Windows/AnimatedBeWoWindow.xaml.cs
#	BeWo/app.config
#	BeWoAllReports.sln
#	BeWoPlanerMobil.sln
#	BeWoPlanerMobil/.vs/BeWoPlanerMobil.csproj.dtbcache.json
#	BeWoTests.sln
#	Dakota/DakotaUtils.cs
#	Dakota/Logic/DakotaInfoCreator.cs
#	Dakota/Models/DakotaFile.cs
#	Data/Access/GenericDAO.cs
#	Data/Access/SearchDAO.cs
#	Data/Data.csproj
#	Host/Web.config
#	Server/Components/ServerUtils/ApiFacade/WebClientFacade.cs
#	Service/BeWoServiceEnums.cs
#	Service/Core/ServiceHelper.cs
#	Service/Core/ServiceValidator.cs
#	Service/Extensions/ServiceEnumExtension.cs
#	Service/Service.csproj
#	Service/ServiceContracts/Enhanced/IAiEnhancedService.cs
#	Service/ServiceContracts/Enhanced/IOperationsEnhancedService.cs
#	Service/ServiceImplementations/EmployeeServiceImp.cs
#	Service/ServiceImplementations/Enhanced/AiEnhancedServiceImp.cs
#	Service/ServiceImplementations/Enhanced/OperationsEnhancedServiceImp.cs
#	Service/ServiceProxy/OpenWebUIFacade.cs
#	Service/ServiceProxy/ServiceFacade.cs
#	Service/ServiceUtils/DistanceCalculator/GoogleDistanceMatrixAPI.cs
#	Shared/BeWoEntityEnums.cs
#	Shared/Core/AppError.cs
#	Shared/Core/Facade/WebClientFacade.cs
#	Shared/Core/WebClientFacade.cs
#	Shared/Shared.csproj
2025-11-28 12:07:35 +01:00

175 lines
4.1 KiB
C#

using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Core;
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;
using WebSecretConfigSetting = BeWo.Service.WebSecretConfigSetting;
namespace Host
{
/// <summary>
///
/// Stellt einen Entpunkt für Clients dar.
/// z.B. app2,app3,app4,...
///
///
/// </summary>
public partial class GkvAbrechnungClient : Page
{
private readonly string INVALID_INPUT = "Bad Request";
private string GkvSecretKey { get; set; } = MergedConfig.GetSecretSetting(WebSecretConfigSetting.GkvSecretKey);
public GkvClientRequestDC GkvClientRequest { get; set; }
public void Sleep() => Thread.Sleep(5000);
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!SessionFacade.IsUserLoggedIn())
SendErrorResponse("Anmeldung erforderlich!");
//https://app5.bewoplaner.de/Host/GkvAbrechungServer?tenant=12345
var str = new StreamReader(Request.InputStream).ReadToEnd();
GkvClientRequest = GkvSender.DeserializeRequest<GkvClientRequestDC>(str, SendInvalidInputResponse);
if (GkvSecretKey is null)
SendErrorResponse(INVALID_INPUT + " 1");
if (GkvSecretKey != GkvClientRequest.GkvSecretKey)
SendErrorResponse(INVALID_INPUT + " 2");
if (GkvClientRequest.Tenant is null)
SendErrorResponse(INVALID_INPUT + " 3");
switch (GkvClientRequest.Type)
{
case RequestType.GkvClientResult:
ClientResult(GkvSender.DeserializeRequest<GkvClientResultRequestDC>(str, SendInvalidInputResponse));
return;
case RequestType.GkvClientSum:
ClientSum(GkvSender.DeserializeRequest<GkvClientSumRequestJson>(str, SendInvalidInputResponse));
return;
default:
SendErrorResponse(INVALID_INPUT + " 4");
return;
}
}
catch (ThreadAbortException eee)
{
}
catch (Exception ex)
{
var ex_text = $"Msg:{ex.Message}\n\n+Stack:{ex.StackTrace}";
SendErrorResponse(ex_text);
}
}
private void ClientResult(GkvClientResultRequestDC req)
{
if (!SessionFacade.IsUserLoggedIn())
SendErrorResponse(INVALID_INPUT + " 4");
if (req.ResultDCs is null || !req.ResultDCs.Any())
SendErrorResponse(INVALID_INPUT + " 5");
// Response
var response = new GkvResponseDC(false);
try
{
var service = new GkvAccountingServiceImp();
service.HandleGkvServerResults(req.ResultDCs);
response.Success = true;
}
catch (GkvException e)
{
response.Message = e.Message;
}
catch (Exception e)
{
response.Message = e.Message;
}
SendResponse(response);
}
private void ClientSum(GkvClientSumRequestJson req)
{
if (req.Start > req.End)
SendErrorResponse(INVALID_INPUT + " 4");
if (!ASPHibernateSessionManager.IsRequestIPValid("GkvSumServerIPAdress"))
SendErrorResponse(INVALID_INPUT + " 5");
// Response
var response = new GkvClientSumResponseJson();
try
{
var sum = DAOFactory.ScriptDAO.GetGkvSumByDateRange(req.Start, req.End);
if(sum is decimal s)
{
response.Sum = s;
}
else
{
response.Message = "sum is null";
}
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
}
}