public async Task ExecuteAsync(IEasJobContext easJobContext, CancellationToken cancellationToken) { _logger.LogInfo("Storage Task is called."); try { var fileDataCache = await _fileDataCacheService.GetFileDataCacheAsync(easJobContext.Ukprn, cancellationToken); if (fileDataCache != null && !fileDataCache.FailedFileValidation) { List <PaymentType> paymentTypes = await _easPaymentService.GetAllPaymentTypes(cancellationToken); Guid submissionId = Guid.NewGuid(); List <EasSubmission> submissionList = BuildSubmissionList(easJobContext.Ukprn, fileDataCache.ValidEasCsvRecords, submissionId); List <EasSubmissionValue> submissionValuesList = BuildEasSubmissionValues(fileDataCache.ValidEasCsvRecords, paymentTypes, submissionId); await _easSubmissionService.PersistEasSubmissionAsync(submissionList, submissionValuesList, easJobContext.Ukprn, cancellationToken); await _validationErrorLoggerService.LogValidationErrorsAsync(easJobContext, fileDataCache.ValidationErrors, cancellationToken); } } catch (Exception ex) { _logger.LogError("Storage Task failed", ex); throw; } }
private async Task GenerateErrorOutputsAsync(IEasJobContext easJobContext, ICollection <ValidationErrorModel> errorModels, IReadOnlyDictionary <string, ValidationErrorRule> validationErrorReferenceData, CancellationToken cancellationToken) { _logger.LogInfo("File Level validation - Error(s) found."); var easCsvRecords = Enumerable.Empty <EasCsvRecord>(); var errorsToReport = _validationErrorBuilder.BuildFileLevelValidationErrors(errorModels, validationErrorReferenceData); await _validationErrorLoggerService.LogValidationErrorsAsync(easJobContext, errorsToReport, cancellationToken); await _reportingController.FileLevelErrorReportAsync(easJobContext, easCsvRecords, errorsToReport, cancellationToken); var fileDataCache = _fileDataCacheService.BuildFileDataCache(easJobContext.Ukprn, easJobContext.FileReference, easCsvRecords, null, null, true); await _fileDataCacheService.PopulateFileDataCacheAsync(fileDataCache, cancellationToken); }