ZUGFeRDRESTService: add validation for valid properties
This commit is contained in:
parent
ac336ce94d
commit
36326ba644
@ -10,6 +10,7 @@ using static DigitalData.Modules.Interfaces.ZUGFeRDInterface;
|
|||||||
using static DigitalData.Modules.Interfaces.PropertyValues;
|
using static DigitalData.Modules.Interfaces.PropertyValues;
|
||||||
using System.Data.SqlClient;
|
using System.Data.SqlClient;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using FirebirdSql.Data.FirebirdClient;
|
||||||
|
|
||||||
namespace ZUGFeRDRESTService.Controllers
|
namespace ZUGFeRDRESTService.Controllers
|
||||||
{
|
{
|
||||||
@ -132,7 +133,7 @@ namespace ZUGFeRDRESTService.Controllers
|
|||||||
{
|
{
|
||||||
_logger.Info("Start processing request to ValidationController");
|
_logger.Info("Start processing request to ValidationController");
|
||||||
|
|
||||||
ZugferdResult oZugferdResult;
|
ZugferdResult oZugferdResult = null;
|
||||||
CheckPropertyValuesResult oPropertyResult = new CheckPropertyValuesResult();
|
CheckPropertyValuesResult oPropertyResult = new CheckPropertyValuesResult();
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -153,6 +154,8 @@ namespace ZUGFeRDRESTService.Controllers
|
|||||||
|
|
||||||
oZugferdResult = _zugferd.ExtractZUGFeRDFileWithGDPicture(oStream);
|
oZugferdResult = _zugferd.ExtractZUGFeRDFileWithGDPicture(oStream);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_logger.Info("Detected Specification was: [{0}]", oZugferdResult.Specification);
|
_logger.Info("Detected Specification was: [{0}]", oZugferdResult.Specification);
|
||||||
|
|
||||||
var oFilteredPropertyMap = _zugferd.FilterPropertyMap(_propertyMap, oZugferdResult.Specification);
|
var oFilteredPropertyMap = _zugferd.FilterPropertyMap(_propertyMap, oZugferdResult.Specification);
|
||||||
@ -187,6 +190,13 @@ namespace ZUGFeRDRESTService.Controllers
|
|||||||
throw new ZUGFeRDExecption(ErrorType.MissingProperties, "Missing Properties");
|
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);
|
Tuple<bool, string> oValidateResult = ValidateBuyerOrderReference(oPropertyResult.ValidProperties);
|
||||||
|
|
||||||
if (oValidateResult.Item1 == false)
|
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.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.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.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.",
|
_ => "Die hochgeladene Datei kann nicht validiert werden.",
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -242,9 +253,12 @@ namespace ZUGFeRDRESTService.Controllers
|
|||||||
{
|
{
|
||||||
// Errors contains the list of missing fields
|
// Errors contains the list of missing fields
|
||||||
ErrorType.MissingProperties => oPropertyResult.MissingProperties,
|
ErrorType.MissingProperties => oPropertyResult.MissingProperties,
|
||||||
|
ErrorType.ValidationFailed => oZugferdResult.ValidationErrors.Select(e =>
|
||||||
|
{
|
||||||
|
return $"Element '{e.ElementName}' mit Wert '{e.ElementValue}': {e.ErrorMessage}";
|
||||||
|
}).ToList(),
|
||||||
_ => new List<string>()
|
_ => new List<string>()
|
||||||
};
|
};
|
||||||
|
|
||||||
_logger.Info($"Responding with message: [{oMessage}]");
|
_logger.Info($"Responding with message: [{oMessage}]");
|
||||||
|
|
||||||
return new ValidationResponse()
|
return new ValidationResponse()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user