diff --git a/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs b/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs index b629122b..c7029f79 100644 --- a/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs +++ b/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs @@ -1,6 +1,7 @@ using DigitalData.Modules.Interfaces; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; @@ -47,7 +48,14 @@ namespace ZUGFeRDRESTService.Controllers public const string REFERENCES_Rejection_30012 = "REFERENCES_Rejection_30012"; public const string AMOUNT_CALC_REJECTION = "AMOUNT_CALC_REJECTION"; + public const string GERMAN = "de-DE"; + public const string ENGLISH = "en-US"; + public const string FRENCH = "fr-FR"; + public const string SPAIN = "es-ES"; + private List _ValidationErrors; + private List _AllowedLanguageCodes; + private string _UserLanguageCode = "de-DE"; private const int MAX_FILE_SIZE_DEFAULT = 25; @@ -128,6 +136,14 @@ namespace ZUGFeRDRESTService.Controllers AMOUNT_CALC_REJECTION }; + _AllowedLanguageCodes = new List() + { + GERMAN, + ENGLISH, + FRENCH, + SPAIN, + }; + _logger.Debug("Validation Controller initialized!"); } @@ -191,14 +207,41 @@ namespace ZUGFeRDRESTService.Controllers /// /// This parameter's name needs to correspond to the html form's file-input name /// This is the email address which the user supplied + /// This is language code which the user supplied (en-US, de-DE) [HttpPost] - public ValidationResponse Post(IFormFile file, string user_id) + public ValidationResponse Post(IFormFile file, string user_id, string language_id = null) { _logger.Info("Start processing request to ValidationController"); ZugferdResult oZugferdResult = null; CheckPropertyValuesResult oPropertyResult = new CheckPropertyValuesResult(); + if (!string.IsNullOrEmpty(user_id)) + { + _logger.Info("UserID set to [{0}].", user_id); + } + else + { + _logger.Info("UserID is empty!"); + } + + if (string.IsNullOrEmpty(language_id)) + { + _logger.Info("Language code was empty. Set to default 'de-DE'"); + // DEFAULT-Sprache = Deutsch de-DE + _UserLanguageCode = GERMAN; + } + else if (_AllowedLanguageCodes.Contains(language_id)) + { + _logger.Info("Language code is allowed. Set to [{0}].", language_id); + _UserLanguageCode = language_id; + } + else + { + _logger.Info("Language code was unknown: [{0}]. Set to default 'de-DE'", language_id); + _UserLanguageCode = GERMAN; + } + try { using Stream oStream = file.OpenReadStream(); @@ -299,7 +342,7 @@ namespace ZUGFeRDRESTService.Controllers }; } } - + } catch (ZUGFeRDExecption ex) { @@ -611,7 +654,7 @@ namespace ZUGFeRDRESTService.Controllers return oReplaceParam1; } - public string GetMessageId() + private string GetMessageId() { return $"{Guid.NewGuid()}@{MESSAGEID_DOMAIN}"; } @@ -772,7 +815,7 @@ namespace ZUGFeRDRESTService.Controllers return oDataTable; } - public bool DeleteExistingPropertyValues(string pMessageId) + private bool DeleteExistingPropertyValues(string pMessageId) { try { @@ -816,18 +859,15 @@ namespace ZUGFeRDRESTService.Controllers return true; } - /// /// Ermittelt die Ausgabe-nachricht für einen Fehlercode /// - public string GetRejectionMessage(string pErrorCode) + private string GetRejectionMessage(string pErrorCode) { _logger.Info("GetRejectionMessage() - errorCode.ToString(): '" + pErrorCode.ToString() + "'"); if (_RecjectionMessageList == null) return string.Empty; - // Sprache wird man vielleicht mal auswählen können - var language = "de-DE"; var searchTitle = string.Empty; if (pErrorCode.Contains("2000")) @@ -844,11 +884,23 @@ namespace ZUGFeRDRESTService.Controllers } else { - // else-Fall muss noch geklärt werden. - searchTitle = "AMOUNT_CALC_REJECTION_Web"; + searchTitle = "ZUGFERD_Rejection_20006_Web"; + } + + // Sprachgenauen Text suchen. + var messageItem = _RecjectionMessageList.Where(i => i.Title.Equals(searchTitle, StringComparison.OrdinalIgnoreCase) && + i.Language.Equals(_UserLanguageCode, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); + + if (messageItem == null && + !_UserLanguageCode.Equals(GERMAN, StringComparison.OrdinalIgnoreCase)) { + + _logger.Info("GetRejectionMessage() - Es wurde kein passender Text für die Sprache [{0}] gefunden.", _UserLanguageCode); + + // Wenn kein sprachgenauer Text vorliegt, hole den deutschen Text. + messageItem = _RecjectionMessageList.Where(i => i.Title.Equals(searchTitle, StringComparison.OrdinalIgnoreCase) && + i.Language.Equals(GERMAN, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); } - var messageItem = _RecjectionMessageList.Where(i => i.Title.Equals(searchTitle, StringComparison.OrdinalIgnoreCase) && i.Language.Equals(language, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); if (messageItem != null) { _logger.Info("GetRejectionMessage() - messageItem: '" + messageItem.String1 + "'"); diff --git a/WEBSERVICES/ZUGFeRDRESTService/Pages/Index.cshtml b/WEBSERVICES/ZUGFeRDRESTService/Pages/Index.cshtml index d941e9ef..1b7cf371 100644 --- a/WEBSERVICES/ZUGFeRDRESTService/Pages/Index.cshtml +++ b/WEBSERVICES/ZUGFeRDRESTService/Pages/Index.cshtml @@ -15,7 +15,12 @@

- + +

+ + +

+