Beispiel #1
0
        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);
            }
        }