ZUGFeRDRESTService: add validation for valid properties

This commit is contained in:
Jonathan Jenne 2023-06-21 13:12:43 +02:00
parent ac336ce94d
commit 36326ba644

View File

@ -10,6 +10,7 @@ using static DigitalData.Modules.Interfaces.ZUGFeRDInterface;
using static DigitalData.Modules.Interfaces.PropertyValues;
using System.Data.SqlClient;
using Microsoft.Extensions.Configuration;
using FirebirdSql.Data.FirebirdClient;
namespace ZUGFeRDRESTService.Controllers
{
@ -132,7 +133,7 @@ namespace ZUGFeRDRESTService.Controllers
{
_logger.Info("Start processing request to ValidationController");
ZugferdResult oZugferdResult;
ZugferdResult oZugferdResult = null;
CheckPropertyValuesResult oPropertyResult = new CheckPropertyValuesResult();
try
@ -153,6 +154,8 @@ namespace ZUGFeRDRESTService.Controllers
oZugferdResult = _zugferd.ExtractZUGFeRDFileWithGDPicture(oStream);
_logger.Info("Detected Specification was: [{0}]", oZugferdResult.Specification);
var oFilteredPropertyMap = _zugferd.FilterPropertyMap(_propertyMap, oZugferdResult.Specification);
@ -187,6 +190,13 @@ namespace ZUGFeRDRESTService.Controllers
throw new ZUGFeRDExecption(ErrorType.MissingProperties, "Missing Properties");
}
oZugferdResult = _zugferd.ValidateZUGFeRDDocument(oZugferdResult);
if (oZugferdResult.ValidationErrors.Any())
{
throw new ZUGFeRDExecption(ErrorType.ValidationFailed, "Validation Failed");
}
Tuple<bool, string> oValidateResult = ValidateBuyerOrderReference(oPropertyResult.ValidProperties);
if (oValidateResult.Item1 == false)
@ -234,6 +244,7 @@ namespace ZUGFeRDRESTService.Controllers
ErrorType.MissingProperties => "Die hochgeladene Datei ist keine gültige ZUGFeRD-Rechnung, es fehlen einige Metadaten.",
ErrorType.FileTooBig => string.Format("Die hochgeladene Datei überschreitet die zulässige Dateigröße [{0}].", _MaxFileSizeInMegabytes),
ErrorType.UnsupportedFormat => "Die hochgeladene Datei enthält ein falsches oder nicht unterstütztes ZUGFeRD Format.",
ErrorType.ValidationFailed => "Die hochgeladene Datei enthält ungültige Werte.",
_ => "Die hochgeladene Datei kann nicht validiert werden.",
};
@ -242,9 +253,12 @@ namespace ZUGFeRDRESTService.Controllers
{
// Errors contains the list of missing fields
ErrorType.MissingProperties => oPropertyResult.MissingProperties,
ErrorType.ValidationFailed => oZugferdResult.ValidationErrors.Select(e =>
{
return $"Element '{e.ElementName}' mit Wert '{e.ElementValue}': {e.ErrorMessage}";
}).ToList(),
_ => new List<string>()
};
_logger.Info($"Responding with message: [{oMessage}]");
return new ValidationResponse()