diff --git a/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs b/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs index 1c7b516d..8d46e7ca 100644 --- a/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs +++ b/WEBSERVICES/ZUGFeRDRESTService/Controllers/ValidationController.cs @@ -77,54 +77,47 @@ namespace ZUGFeRDRESTService.Controllers } /// - /// POST: /api/Validation + /// POST: /api/validation /// /// This parameter's name needs to correspond to the html form's file-input name [HttpPost] public async Task Post(IFormFile file, string user_id) { - _logger.Debug("Start processing request to ValidationController"); - - string oFilePath = Path.Combine(Path.GetTempPath(), file.FileName); - - _logger.Debug("Saving file to temp-path [{0}]", oFilePath); - - using FileStream oStream = new FileStream(oFilePath, FileMode.Create); - await file.CopyToAsync(oStream); - - // TODO: Delete temp file / Do we even need the temp file? - - _logger.Debug("File successfully saved!"); + _logger.Debug("Start processing request to ValidationController"); CrossIndustryDocumentType oDocument; PropertyValues.CheckPropertyValuesResult oResult = new PropertyValues.CheckPropertyValuesResult(); try - { - _logger.Debug("Extracting ZUGFeRD Data from file [{0}]", oFilePath); - - oDocument = _zugferd.ExtractZUGFeRDFileWithGDPicture(oFilePath); - - _logger.Debug("Checking ZUGFeRD Data against the database"); - - oResult = _props.CheckPropertyValues(oDocument, _propertyMap, "MESSAGEID"); - - _logger.Debug("Result of checking against the database: {0} valid properties, {1} missing properties", - oResult.ValidProperties.Count, oResult.MissingProperties.Count); - - if (oResult.MissingProperties.Count > 0) { - throw new ZUGFeRDExecption(ZUGFeRDInterface.ErrorType.MissingProperties, - "Die hochgeladene Datei ist eine gültige ZUGFeRD-Rechnung, allerdings fehlen benötigte Daten."); - } - - string oMessage = "Die hochgeladene Datei ist eine gültige-ZUGFeRD Rechnung"; - - _logger.Debug($"Replying with: [{oMessage}]"); - - return new ValidationResponse() + { + using Stream oStream = file.OpenReadStream(); { - status = RESPONSE_OK, - message = oMessage + _logger.Debug("Extracting ZUGFeRD Data from file [{0}]", file.FileName); + + oDocument = _zugferd.ExtractZUGFeRDFileWithGDPicture(oStream); + + _logger.Debug("Checking ZUGFeRD Data against the database"); + + oResult = _props.CheckPropertyValues(oDocument, _propertyMap, "MESSAGEID"); + + _logger.Debug("Result of checking against the database: {0} valid properties, {1} missing properties", + oResult.ValidProperties.Count, oResult.MissingProperties.Count); + + if (oResult.MissingProperties.Count > 0) + { + throw new ZUGFeRDExecption(ZUGFeRDInterface.ErrorType.MissingProperties, + "Die hochgeladene Datei ist eine gültige ZUGFeRD-Rechnung, allerdings fehlen benötigte Daten."); + } + + string oMessage = "Die hochgeladene Datei ist eine gültige-ZUGFeRD Rechnung"; + + _logger.Debug($"Replying with: [{oMessage}]"); + + return new ValidationResponse() + { + status = RESPONSE_OK, + message = oMessage + }; }; } catch (ZUGFeRDExecption ex) @@ -154,14 +147,15 @@ namespace ZUGFeRDRESTService.Controllers return new ValidationResponse() { status = RESPONSE_ERROR, - message = oMessage + message = oMessage, + errors = oErrors }; } catch (Exception ex) { _logger.Error(ex); - string oMessage = "Die hochgeladene Datei kann nicht validiert werden!"; + string oMessage = "Die hochgeladene Datei kann nicht validiert werden, weil ein unbekannter Fehler aufgetreten ist."; _logger.Debug($"Replying with: [{oMessage}]");