public IAmalgamationResult RemoveInvalidLearners(IAmalgamationResult amalgamationResult) { var invalidLearners = new HashSet <string>(amalgamationResult.ValidationErrors.GroupBy(x => x.LearnRefNumber).Select(s => s.First()).Where(t => t.Severity == Severity.Error).Select(m => m.LearnRefNumber), StringComparer.OrdinalIgnoreCase); if (invalidLearners.Count() > 0) { amalgamationResult.Message.Learner.RemoveAll(l => invalidLearners.Contains(l.LearnRefNumber)); } return(amalgamationResult); }
public async Task ProcessAsync(IAmalgamationResult amalgamationResult, string outputDirectory, CancellationToken cancellationToken) { var invalidLearnRefNumbers = GetInvalidLearnRefNumbers(amalgamationResult.ValidationErrors); var validMessage = RemoveInvalidLearnersFromMessage(amalgamationResult.Message, invalidLearnRefNumbers); if (validMessage != null) { var amalgamatedFileName = $"ILR-{amalgamationResult.Message.Header.Source.UKPRN}-2021-{_dateTimeProvider.GetNowUtc().ToString("yyyyMMdd-HHmmss")}-01.xml"; using (var stream = await _fileService.OpenWriteStreamAsync(amalgamatedFileName, outputDirectory, cancellationToken)) { _xmlSerializationService.Serialize(validMessage, stream); } } if (amalgamationResult.ValidationErrors != null) { await _csvService.WriteAsync <IAmalgamationValidationError, AmalgamationValidationErrorMapper>(amalgamationResult.ValidationErrors, $"FileMergeSummaryReport.csv", outputDirectory, cancellationToken); } }