Esempio n. 1
0
        public IEnumerable <UploadError> ValidateCohortReference(IEnumerable <ApprenticeshipUploadModel> records, string cohortReference)
        {
            var stopwatch = Stopwatch.StartNew();

            var result = _validator.ValidateCohortReference(records, cohortReference);

            _logger.Trace($"Took {stopwatch.ElapsedMilliseconds} milliseconds to validate file 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
            });
        }