# Conflicts: # .gitignore # BeWo/DebugConfig.cs # BeWo/ServiceProxy/Generated.cs # Data/ASPHibernateSessionManager.cs # Host/Web.config # Service/Service.csproj # Service/ServiceContracts/IAccountingService.cs # Service/ServiceImplementations/AccountingServiceImp.cs # Shared/Core/Utils.cs # Shared/DataContracts/InvoiceBaseDC.cs # Shared/Shared.csproj
175 lines
4.0 KiB
C#
175 lines
4.0 KiB
C#
using BeWo.Data;
|
|
using BeWo.Data.Access;
|
|
using BeWo.Data.Entities;
|
|
using BeWo.Service.ServiceImplementations;
|
|
using BS.Shared;
|
|
using BS.Shared.AppSender;
|
|
using BS.Shared.DataContracts;
|
|
using BS.Shared.DataContracts.GkvAbrechnung;
|
|
using BS.Shared.Exceptions;
|
|
using Newtonsoft.Json;
|
|
using NHibernate.Dialect.Function;
|
|
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
|
|
{
|
|
/// <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; } = ConfigurationManager.AppSettings.Get("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
|
|
}
|
|
} |