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 }); }
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); }