public IEnumerable <UploadError> ValidateUlnUniqueness(IEnumerable <ApprenticeshipUploadModel> records) { var stopwatch = Stopwatch.StartNew(); var result = _validator.ValidateUlnUniqueness(records); _logger.Trace($"Took {stopwatch.ElapsedMilliseconds} milliseconds to validate ULN uniqueness for {records.Count()} items"); return(result); }
public async Task <BulkUploadResult> ValidateFileStructure(UploadApprenticeshipsViewModel uploadApprenticeshipsViewModel, long providerId, CommitmentView commitment) { if (uploadApprenticeshipsViewModel.Attachment == null) { return new BulkUploadResult { Errors = new List <UploadError> { new UploadError("No file chosen") } } } ; var fileContent = new StreamReader(uploadApprenticeshipsViewModel.Attachment.InputStream).ReadToEnd(); var fileName = uploadApprenticeshipsViewModel?.Attachment?.FileName ?? "<- NO NAME ->"; _logger.Trace($"Saving bulk upload file. {fileName}"); var bulkUploadId = await _mediator.Send( new SaveBulkUploadFileCommand { ProviderId = uploadApprenticeshipsViewModel.ProviderId, CommitmentId = commitment.Id, FileContent = fileContent, FileName = fileName }); _logger.Info($"Saved bulk upload with Id: {bulkUploadId}"); var fileAttributeErrors = _bulkUploadValidator.ValidateFileSize(uploadApprenticeshipsViewModel.Attachment).ToList(); if (fileAttributeErrors.Any()) { foreach (var error in fileAttributeErrors) { _logger.Warn($"File Structure Error --> {error.Message}", uploadApprenticeshipsViewModel.ProviderId, commitment.Id); } _logger.Info($"Failed validation bulk upload file with {fileAttributeErrors.Count} errors", uploadApprenticeshipsViewModel.ProviderId, commitment.Id); return(new BulkUploadResult { Errors = fileAttributeErrors }); } var uploadResult = _fileParser.CreateViewModels(providerId, commitment, fileContent); if (uploadResult.HasErrors) { return(uploadResult); } var errors = _bulkUploadValidator.ValidateCohortReference(uploadResult.Data, uploadApprenticeshipsViewModel.HashedCommitmentId).ToList(); errors.AddRange(_bulkUploadValidator.ValidateUlnUniqueness(uploadResult.Data).ToList()); return(new BulkUploadResult { Errors = errors, Data = uploadResult.Data, BulkUploadId = bulkUploadId }); }