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 @@
-
+
+
+
+
+
+