diff --git a/BeWo/Converter/GkvState2StringConverter.cs b/BeWo/Converter/GkvState2StringConverter.cs index 498f6fc97..b6b4f9ab0 100644 --- a/BeWo/Converter/GkvState2StringConverter.cs +++ b/BeWo/Converter/GkvState2StringConverter.cs @@ -21,7 +21,7 @@ namespace BeWo.Converter switch (state.Value) { case GkvState.NoSend: return "Erstellt"; - case GkvState.Error: return "Fehler"; + case GkvState.ErrorSoft: return "Fehler"; case GkvState.ErrorFatal: return "Fataler Fehler"; case GkvState.Paid: return "Bezahlt"; case GkvState.WaitingForDakota: return "Warte auf Übertragung"; diff --git a/BeWo/ServiceProxy/Generated.cs b/BeWo/ServiceProxy/Generated.cs index cb3f0c484..94339d75e 100644 --- a/BeWo/ServiceProxy/Generated.cs +++ b/BeWo/ServiceProxy/Generated.cs @@ -2096,9 +2096,9 @@ namespace BeWo.ServiceProxy [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ServiceInvoicePeriodDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.InvoiceNumberDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AppResponseDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.InvoiceType))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvTransferResultType))] - [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.RequestType))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvTransferProtokollDC))] @@ -2106,12 +2106,11 @@ namespace BeWo.ServiceProxy [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungViewFilterDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungCreateRequestDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungCreateResponseDC))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvResponseDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendRequestDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendResponseDC))] - [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvServerGetIKRequestDC))] - [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvRequestDC))] - [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvServerGetIKResponseDC))] - [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvResponseDC))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKRequestDC))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKResponseDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.MemoryStream))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.Stream))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))] @@ -6334,9 +6333,9 @@ namespace BeWo.ServiceProxy [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ServiceInvoicePeriodDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.InvoiceNumberDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AppResponseDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.InvoiceType))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvTransferResultType))] - [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.RequestType))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvTransferProtokollDC))] @@ -6344,12 +6343,11 @@ namespace BeWo.ServiceProxy [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungViewFilterDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungCreateRequestDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungCreateResponseDC))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvResponseDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendRequestDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendResponseDC))] - [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvServerGetIKRequestDC))] - [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvRequestDC))] - [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvServerGetIKResponseDC))] - [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvResponseDC))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKRequestDC))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKResponseDC))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.MemoryStream))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.Stream))] [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))] @@ -9734,9 +9732,9 @@ namespace BeWo.ServiceProxy [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/SendNewGkvAbrechnungBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendResponseDC SendNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendRequestDC req); - [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/SendApp8GetIKRequest", ReplyAction="http://tempuri.org/IAccountingService/SendApp8GetIKRequestResponse")] - [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/SendApp8GetIKRequestBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] - BS.Shared.DataContracts.GkvAbrechnung.GkvServerGetIKResponseDC SendApp8GetIKRequest(BS.Shared.DataContracts.GkvAbrechnung.GkvServerGetIKRequestDC req); + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/SendGetIKRequest", ReplyAction="http://tempuri.org/IAccountingService/SendGetIKRequestResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/SendGetIKRequestBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] + BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKResponseDC SendGetIKRequest(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKRequestDC req); } [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] @@ -9968,9 +9966,9 @@ namespace BeWo.ServiceProxy return base.Channel.SendNewGkvAbrechnung(req); } - public BS.Shared.DataContracts.GkvAbrechnung.GkvServerGetIKResponseDC SendApp8GetIKRequest(BS.Shared.DataContracts.GkvAbrechnung.GkvServerGetIKRequestDC req) + public BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKResponseDC SendGetIKRequest(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKRequestDC req) { - return base.Channel.SendApp8GetIKRequest(req); + return base.Channel.SendGetIKRequest(req); } } diff --git a/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs b/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs index 190589b6b..57a1a0086 100644 --- a/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs +++ b/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs @@ -209,17 +209,9 @@ namespace BeWo.View.Detail.Accounting var state = vm.GetState(); - var can_send = false; - - can_send |= state == GkvState.NoSend; - can_send |= state == GkvState.Error; -#if DEBUG - can_send |= state == GkvState.ErrorFatal; -#endif - string text = "Sind Sie sicher, dass Sie die gewählte GKV-Abrechnung senden möchten?"; - if (state == GkvState.Error) + if (state == GkvState.ErrorSoft) text = "Die gewählte GKV-Abrechnung wurde nicht erfolgreich an die Krankenkasse übertragen. Möchten Sie sie erneut senden?"; if (MessageBox.Show(text, "GKV-Abrechnung senden", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) diff --git a/BeWo/View/Detail/OrganisationView.xaml.cs b/BeWo/View/Detail/OrganisationView.xaml.cs index d5ef800e6..e203e625b 100644 --- a/BeWo/View/Detail/OrganisationView.xaml.cs +++ b/BeWo/View/Detail/OrganisationView.xaml.cs @@ -314,15 +314,15 @@ namespace BeWo.View.Detail private void IKNumber_Button_Click(object sender, RoutedEventArgs e) { - var req = new GkvServerGetIKRequestDC(); + var req = new GkvAbrechnungGetIKRequestDC(); req.IKKrankenkasse = ViewModel.IKKrankenkasse; req.Leistungserbringergruppe = ViewModel.Leistungserbringergruppe; - ServiceFacade.DoAccountingServiceAsync(x => x.SendApp8GetIKRequest(req), cb => Dispatcher.Invoke(() => IKRequestCallback(req, cb))); + ServiceFacade.DoAccountingServiceAsync(x => x.SendGetIKRequest(req), cb => Dispatcher.Invoke(() => IKRequestCallback(req, cb))); } - private void IKRequestCallback(GkvServerGetIKRequestDC req, GkvServerGetIKResponseDC response) + private void IKRequestCallback(GkvAbrechnungGetIKRequestDC req, GkvAbrechnungGetIKResponseDC response) { if(response is null || !response.Success) { diff --git a/DakotaSender/Program.cs b/DakotaSender/Program.cs index a29edc7da..609893b98 100644 --- a/DakotaSender/Program.cs +++ b/DakotaSender/Program.cs @@ -338,7 +338,7 @@ namespace DakotaSender { try { - var res = await GkvSender.SendKundenAppClientRequestAsync(req, tenant); + var res = await GkvSender.SendKundenAppClientRequestAsync(req, tenant, user); if (res.Success) return; diff --git a/Data/ASPHibernateSessionManager.cs b/Data/ASPHibernateSessionManager.cs index 8880b5f0c..d41cfb348 100644 --- a/Data/ASPHibernateSessionManager.cs +++ b/Data/ASPHibernateSessionManager.cs @@ -52,6 +52,11 @@ namespace BeWo.Data { userLoaded = TryAuthenticateWithLoginForm(context); } + + if(!userLoaded) + { + userLoaded = TryAuthenticateWithGkv(context); + } if(!userLoaded && !(SessionFacade.LoggedInUser?.Oid is null)) { @@ -77,9 +82,6 @@ namespace BeWo.Data if (context.Request.FilePath.IndexOf("GkvAbrechnungServer.aspx") >= 0) return false; - if (context.Request.FilePath.IndexOf("GkvAbrechnungClient.aspx") >= 0) - return false; - if (context.Request.FilePath.IndexOf("Admin.aspx") >= 0) return false; @@ -140,6 +142,45 @@ namespace BeWo.Data return lTenant; } + private static bool TryAuthenticateWithRequestParams(HttpApplication context) + { + string lUserName = null; + string lPassword = null; + + //if (!context.Request.Params.AllKeys.Contains("tenant")) + // return false; + var lTenant = GetTenant(context); + + if (!string.IsNullOrEmpty(lTenant)) + { + if (context.Request.Params.AllKeys.Contains("token")) + { + lUserName = GetLoginInfoFromToken(context.Request.Params["token"])["user"]; + lPassword = GetLoginInfoFromToken(context.Request.Params["token"])["password"]; + } + } + else + { + lUserName = context.Request.Params["username"]; + lPassword = context.Request.Params["token"]; + } + + if (!BS.Shared.Core.Utils.IsAnyNullOrEmpty(lUserName, lPassword)) + { + var ip = context.Request.UserHostAddress; + + var lUser = DAOFactory.UserDAO.FindUserByLoginName(lUserName, ip); + + if (lUser != null && lUser.CheckRC2Password(lPassword)) + { + SessionFacade.LoggedInUser = lUser; + return true; + } + } + + return false; + } + private static bool TryAuthenticateWithLoginForm(HttpApplication context) { var name = context.Request.Params["ctl00$tb_login"]; @@ -159,43 +200,49 @@ namespace BeWo.Data return false; } - private static bool TryAuthenticateWithRequestParams(HttpApplication context) + private static bool TryAuthenticateWithGkv(HttpApplication context) { - string lUserName = null; - string lPassword = null; + if (context.Request.FilePath.IndexOf("GkvAbrechnungClient.aspx") == -1) + return false; - //if (!context.Request.Params.AllKeys.Contains("tenant")) - // return false; - var lTenant = GetTenant(context); + var appsettingip = System.Configuration.ConfigurationManager.AppSettings["App8IpAddress"]; + var clientip = GetIP(true); - if(!string.IsNullOrEmpty(lTenant)) + if (appsettingip != clientip) + return false; + + var useroidstr = context.Request.Params["useroid"]; + + if (!long.TryParse(useroidstr, out long useroid)) + return false; + + SessionFacade.LoggedInUser = DAOFactory.GenericDAO.LoadByID(useroid); + + return true; + } + + private static string GetIP(bool CheckForward = false) + { + // https://stackoverflow.com/a/13249280 + + string ip = null; + if (CheckForward) { - if (context.Request.Params.AllKeys.Contains("token")) - { - lUserName = GetLoginInfoFromToken(context.Request.Params["token"])["user"]; - lPassword = GetLoginInfoFromToken(context.Request.Params["token"])["password"]; - } + ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; + } + + if (string.IsNullOrEmpty(ip)) + { + ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } else - { - lUserName = context.Request.Params["username"]; - lPassword = context.Request.Params["token"]; + { // Using X-Forwarded-For last address + ip = ip.Split(',') + .Last() + .Trim(); } - if(!BS.Shared.Core.Utils.IsAnyNullOrEmpty(lUserName, lPassword)) - { - var ip = context.Request.UserHostAddress; - - var lUser = DAOFactory.UserDAO.FindUserByLoginName(lUserName, ip); - - if(lUser != null && lUser.CheckRC2Password(lPassword)) - { - SessionFacade.LoggedInUser = lUser; - return true; - } - } - - return false; + return ip; } private static Dictionary GetLoginInfoFromToken(string token) diff --git a/Host/GkvAbrechnungClient.aspx.cs b/Host/GkvAbrechnungClient.aspx.cs index 52869d35b..9667ba807 100644 --- a/Host/GkvAbrechnungClient.aspx.cs +++ b/Host/GkvAbrechnungClient.aspx.cs @@ -61,6 +61,9 @@ namespace Host private void ClientResult(GkvClientResultRequestDC req) { if (GkvSecretKey != req.GkvSecretKey) + SendErrorResponse(INVALID_INPUT + " 2"); + + if (req.ResultDCs is null || !req.ResultDCs.Any()) SendInvalidInputResponse(); // Response @@ -68,8 +71,11 @@ namespace Host try { - // var fehler_protokoll = DAOFactory.GenericDAO.GetByID(req.Protokoll_Fehler_Oid); - + foreach (var result in req.ResultDCs) + { + HandleResult(result); + } + response.Success = true; } catch (GkvException e) @@ -84,6 +90,29 @@ namespace Host SendResponse(response); } + private void HandleResult(GkvServerResultDC result) + { + var protokoll = DAOFactory.GenericDAO.GetByID(result.ProtokollOid); + + protokoll.ResultType = result.ResultType; + protokoll.Fehlertitel = result.Titel; + protokoll.Fehlerdatum = result.Datum; + protokoll.Fehlernachricht = result.Nachricht; + + switch (result.ResultType) + { + case GkvTransferResultType.Success: + protokoll.SentDakotaSuccess = true; + break; + case GkvTransferResultType.FailSoft: + break; + case GkvTransferResultType.FailFatal: + break; + case GkvTransferResultType.FailFollowUp: + break; + } + } + #region Senden private void SendInvalidInputResponse() => SendErrorResponse(INVALID_INPUT); private void SendErrorResponse(string message) diff --git a/Host/GkvAbrechnungServer.aspx.cs b/Host/GkvAbrechnungServer.aspx.cs index bca713b3b..e12f5c692 100644 --- a/Host/GkvAbrechnungServer.aspx.cs +++ b/Host/GkvAbrechnungServer.aspx.cs @@ -74,6 +74,8 @@ namespace Host var ex_text = ex.Message + "\n" + ex.StackTrace; SendErrorResponse(ex_text); } + + Response.End(); } private bool CheckValues(GkvRequestDC req) @@ -88,7 +90,7 @@ namespace Host return false; #if !DEBUG - if (string.IsNullOrWhiteSpace(request.Password)) + if (string.IsNullOrWhiteSpace(req.Password)) return false; #endif diff --git a/Host/Host.csproj.user b/Host/Host.csproj.user index f8b116048..5ee002517 100644 --- a/Host/Host.csproj.user +++ b/Host/Host.csproj.user @@ -3,7 +3,7 @@ BeWo2.0 true - Debug|Any CPU + Release|Any CPU false diff --git a/Service/DCEntityMapper/GkvAbrechnungDC_GkvAbrechnung.cs b/Service/DCEntityMapper/GkvAbrechnungDC_GkvAbrechnung.cs index 96152fc10..d22ed2991 100644 --- a/Service/DCEntityMapper/GkvAbrechnungDC_GkvAbrechnung.cs +++ b/Service/DCEntityMapper/GkvAbrechnungDC_GkvAbrechnung.cs @@ -50,7 +50,7 @@ namespace BeWo.Service.DCEntityMapper isReady = true; tooltip = "Senden"; break; - case BS.Shared.GkvState.Error: + case BS.Shared.GkvState.ErrorSoft: isReady = true; tooltip = "Erneut senden"; break; @@ -58,7 +58,11 @@ namespace BeWo.Service.DCEntityMapper isReady = true; tooltip = "Fataler Fehler"; break; - case BS.Shared.GkvState.Paid: + case BS.Shared.GkvState.ErrorFolgefehler: + isReady = false; + tooltip = "Folge Fehler"; + break; + case BS.Shared.GkvState.Paid: isReady = false; tooltip = "Bereits bezahlt"; break; diff --git a/Service/ServiceContracts/IAccountingService.cs b/Service/ServiceContracts/IAccountingService.cs index 2c76ebe15..90f31269e 100644 --- a/Service/ServiceContracts/IAccountingService.cs +++ b/Service/ServiceContracts/IAccountingService.cs @@ -171,6 +171,6 @@ namespace BeWo.Service.ServiceContracts [FaultContract(typeof(BeWoFault))] [OperationContract] - GkvAbrechnungGetIKResponseDC SendApp8GetIKRequest(GkvAbrechnungGetIKRequestDC req); + GkvAbrechnungGetIKResponseDC SendGetIKRequest(GkvAbrechnungGetIKRequestDC req); } } \ No newline at end of file diff --git a/Service/ServiceImplementations/AccountingServiceImp.cs b/Service/ServiceImplementations/AccountingServiceImp.cs index ee5085eac..b97eada21 100644 --- a/Service/ServiceImplementations/AccountingServiceImp.cs +++ b/Service/ServiceImplementations/AccountingServiceImp.cs @@ -959,7 +959,7 @@ namespace BeWo.Service.ServiceImplementations return response; } - public GkvAbrechnungGetIKResponseDC SendApp8GetIKRequest(GkvAbrechnungGetIKRequestDC req) + public GkvAbrechnungGetIKResponseDC SendGetIKRequest(GkvAbrechnungGetIKRequestDC req) { try { @@ -1091,7 +1091,7 @@ namespace BeWo.Service.ServiceImplementations { transfernummer = DAOFactory.SearchDAO.GetNextTransfernummer(datenannahmestelle); } - else if (state == GkvState.Error || state == GkvState.ErrorFatal || state == GkvState.ErrorFolgefehler) + else if (state == GkvState.ErrorSoft || state == GkvState.ErrorFatal || state == GkvState.ErrorFolgefehler) { transfernummer = gkvAbrechnung.GkvTransferProtokolle.Last().Transfernummer; } diff --git a/Shared/AppSender/AppRequestSender.cs b/Shared/AppSender/AppRequestSender.cs index 08dfd7999..2f9891b34 100644 --- a/Shared/AppSender/AppRequestSender.cs +++ b/Shared/AppSender/AppRequestSender.cs @@ -52,13 +52,13 @@ namespace BS.Shared.AppSender return JsonConvert.DeserializeObject(response_app8_str); } - public static async Task SendAsync(Req request, string url, string tenant) where Req : AppRequestDC where Res : AppResponseDC + public static async Task SendAsync(Req request, string url, string tenant, long? useroid = null) where Req : AppRequestDC where Res : AppResponseDC { request.Tenant = tenant; var data = JsonConvert.SerializeObject(request); - var response_app8_str = await SendAsync(url, data, tenant); + var response_app8_str = await SendAsync(url, data, tenant, useroid); if (string.IsNullOrEmpty(response_app8_str)) return null; @@ -82,12 +82,15 @@ namespace BS.Shared.AppSender return response_app8_str; } - private static async Task SendAsync(string url, string dataString, string tenant) + private static async Task SendAsync(string url, string dataString, string tenant, long? useroid = null) { string response; url += "?tenant=" + tenant; + if (useroid.HasValue) + url += "&user=" + useroid.Value; + using (WebClient client = new WebClient()) { client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); diff --git a/Shared/AppSender/GkvSender.cs b/Shared/AppSender/GkvSender.cs index 375412e8e..9fac7142f 100644 --- a/Shared/AppSender/GkvSender.cs +++ b/Shared/AppSender/GkvSender.cs @@ -60,7 +60,7 @@ namespace BS.Shared.AppSender return app8_response; } - public static async Task SendKundenAppClientRequestAsync(Req request, string tenant) where Req : AppRequestDC where Res : AppResponseDC + public static async Task SendKundenAppClientRequestAsync(Req request, string tenant, long useroid) where Req : AppRequestDC where Res : AppResponseDC { string server = AppRequestSender.GetServerFromTenant(tenant); @@ -78,7 +78,7 @@ namespace BS.Shared.AppSender try { - app8_response = await AppRequestSender.SendAsync(request, url, tenant); + app8_response = await AppRequestSender.SendAsync(request, url, tenant, useroid); } catch (Exception e) { diff --git a/Shared/BeWoEntityEnums.cs b/Shared/BeWoEntityEnums.cs index 17c1ff76c..ad43da2d2 100644 --- a/Shared/BeWoEntityEnums.cs +++ b/Shared/BeWoEntityEnums.cs @@ -1280,7 +1280,7 @@ namespace BS.Shared public enum GkvState { NoSend, - Error, + ErrorSoft, ErrorFatal, ErrorFolgefehler, Paid, diff --git a/Shared/Extensions/GkvAbrechnungExtensions.cs b/Shared/Extensions/GkvAbrechnungExtensions.cs index 4b094a7c6..26f09cc84 100644 --- a/Shared/Extensions/GkvAbrechnungExtensions.cs +++ b/Shared/Extensions/GkvAbrechnungExtensions.cs @@ -19,7 +19,7 @@ namespace BS.Shared.Extensions return GkvState.NoSend; if (gkvAbrechnung.LastTransferProtokoll.ResultType == GkvTransferResultType.FailSoft) - return GkvState.Error; + return GkvState.ErrorSoft; if (gkvAbrechnung.LastTransferProtokoll.ResultType == GkvTransferResultType.FailFatal) return GkvState.ErrorFatal; @@ -30,18 +30,26 @@ namespace BS.Shared.Extensions if (!gkvAbrechnung.UrbelegeGesendet) return GkvState.WaitingForUrbelege; - if (DateTime.Now - gkvAbrechnung.ErstelltAm <= TimeSpan.FromDays(28)) + var waiting_time_span = DateTime.Now - gkvAbrechnung.ErstelltAm; + if (waiting_time_span <= TimeSpan.FromDays(28)) return GkvState.WaitingForKrankenkasse; return GkvState.WaitingForKrankenkasseTooLong; } public static bool IsWaiting(this IGkvAbrechnung gkvAbrechnung) - => gkvAbrechnung.GetState().IsWaiting(); - public static bool IsWaiting(this GkvState state) { - if (state == GkvState.WaitingForKrankenkasse || state == GkvState.WaitingForKrankenkasseTooLong) - return true; + var state = gkvAbrechnung.GetState(); + + switch (state) + { + case GkvState.WaitingForDakota: + return true; + case GkvState.WaitingForKrankenkasse: + return true; + case GkvState.WaitingForKrankenkasseTooLong: + return true; + } return false; }