diff --git a/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs b/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs index 841f70dc..899b15a4 100644 --- a/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs +++ b/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs @@ -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 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() }; - _logger.Info($"Responding with message: [{oMessage}]"); return new ValidationResponse()