public async Task <BulkUploadResult> ValidateFileRows(IEnumerable <ApprenticeshipUploadModel> rows, long providerId, long bulkUploadId)
        {
            var trainingProgrammes = await GetTrainingProgrammes();

            var validationErrors = _bulkUploadValidator.ValidateRecords(rows, trainingProgrammes).ToList();

            if (validationErrors.Any())
            {
                var logtext = new StringBuilder();
                logtext.AppendLine($"Failed validation of bulk upload id {bulkUploadId} with {validationErrors.Count} errors");

                var errorTypes = validationErrors.GroupBy(x => x.ErrorCode);
                foreach (var errorType in errorTypes)
                {
                    var errorsOfType = validationErrors.FindAll(x => x.ErrorCode == errorType.Key);
                    logtext.AppendLine($"{errorsOfType.Count} x {errorType.Key} - \"{StripHtml(errorsOfType.First().Message)}\"");
                }

                _logger.Warn(logtext.ToString(), providerId);

                return(new BulkUploadResult {
                    Errors = validationErrors
                });
            }

            return(new BulkUploadResult {
                Errors = new List <UploadError>(), Data = rows
            });
        }
示例#2
0
        public IEnumerable <UploadError> ValidateRecords(IEnumerable <ApprenticeshipUploadModel> records, List <TrainingProgramme> trainingProgrammes)
        {
            var stopwatch = Stopwatch.StartNew();

            var result = _validator.ValidateRecords(records, trainingProgrammes);

            _logger.Trace($"Took {stopwatch.ElapsedMilliseconds} milliseconds to validate fields for {records.Count()} items");

            return(result);
        }