public async Task <List <FundingSummaryModel> > BuildAsync(IReportServiceContext reportServiceContext, CancellationToken cancellationToken) { FundingSummaryModel fundingSummaryModelAlbFunding = new FundingSummaryModel() { Title = "ILR Advanced Loans Bursary Funding (£)" }; FundingSummaryModel fundingSummaryModelAlbAreaCosts = new FundingSummaryModel() { Title = "ILR Advanced Loans Bursary Area Costs (£)" }; List <FundingSummaryModel> fundingSummaryModels = new List <FundingSummaryModel>() { fundingSummaryModelAlbFunding, fundingSummaryModelAlbAreaCosts }; Task <IMessage> ilrFile = _ilrProviderService.GetIlrFile(reportServiceContext, cancellationToken); Task <List <string> > validLearners = _validLearnersService.GetLearnersAsync(reportServiceContext, cancellationToken); Task <ALBGlobal> albData = _allbProviderService.GetAllbData(reportServiceContext, cancellationToken); await Task.WhenAll(ilrFile, validLearners, albData); List <string> ilrError = new List <string>(); List <string> albLearnerError = new List <string>(); try { ILearner[] learners = ilrFile.Result?.Learners?.Where(x => validLearners.Result.Contains(x.LearnRefNumber)).ToArray(); foreach (ILearner learner in learners ?? Enumerable.Empty <ILearner>()) { ALBLearner albLearner = albData.Result?.Learners?.SingleOrDefault(x => string.Equals(x.LearnRefNumber, learner.LearnRefNumber, StringComparison.OrdinalIgnoreCase)); if (albLearner == null) { albLearnerError.Add(learner.LearnRefNumber); continue; } foreach (ILearningDelivery learningDelivery in learner.LearningDeliveries ?? Enumerable.Empty <ILearningDelivery>()) { LearningDelivery albLearningDeliveryAreaCosts = albLearner.LearningDeliveries?.Where(x => x.LearningDeliveryValue.FundLine == "Advanced Learner Loans Bursary").SingleOrDefault(x => x.AimSeqNumber == learningDelivery.AimSeqNumber); if (learningDelivery.LearningDeliveryFAMs != null && learningDelivery.LearningDeliveryFAMs.Any(x => !(string.Equals(x.LearnDelFAMType, Constants.LearningDeliveryFAMCodeLDM, StringComparison.OrdinalIgnoreCase) && string.Equals(x.LearnDelFAMCode, "359", StringComparison.OrdinalIgnoreCase)))) { TotalAlbFunding(albLearningDeliveryAreaCosts?.LearningDeliveryPeriodisedValues, reportServiceContext.ReturnPeriod, AlbSupportPayment, fundingSummaryModelAlbFunding); } TotalAlbAreaCosts(albLearningDeliveryAreaCosts?.LearningDeliveryPeriodisedValues, reportServiceContext.ReturnPeriod, fundingSummaryModelAlbAreaCosts); } } if (ilrError.Any()) { _logger.LogWarning($"Failed to get one or more ILR learners while {nameof(AllbBuilder)}.{nameof(BuildAsync)}: {_stringUtilitiesService.JoinWithMaxLength(ilrError)}"); } if (albLearnerError.Any()) { _logger.LogWarning($"Failed to get one or more ALB learners while {nameof(AllbBuilder)}.{nameof(BuildAsync)}: {_stringUtilitiesService.JoinWithMaxLength(albLearnerError)}"); } } catch (Exception ex) { _logger.LogError("AlbBuilder BuildAsync failed with Exception: ", ex); } return(fundingSummaryModels); }
private async Task <string> GetCsv(IReportServiceContext reportServiceContext, CancellationToken cancellationToken) { Task <IMessage> ilrFileTask = _ilrProviderService.GetIlrFile(reportServiceContext, cancellationToken); Task <ALBGlobal> albDataTask = _allbProviderService.GetAllbData(reportServiceContext, cancellationToken); Task <List <string> > validLearnersTask = _validLearnersService.GetLearnersAsync(reportServiceContext, cancellationToken); await Task.WhenAll(ilrFileTask, albDataTask, validLearnersTask); if (cancellationToken.IsCancellationRequested) { return(null); } if (validLearnersTask.Result == null) { return(null); } string[] learnAimRefs = ilrFileTask.Result?.Learners?.Where(x => validLearnersTask.Result.Contains(x.LearnRefNumber)) .SelectMany(x => x.LearningDeliveries).Select(x => x.LearnAimRef).Distinct().ToArray(); Dictionary <string, LarsLearningDelivery> larsLearningDeliveries = await _larsProviderService.GetLearningDeliveriesAsync(learnAimRefs, cancellationToken); if (larsLearningDeliveries == null) { return(null); } if (cancellationToken.IsCancellationRequested) { return(null); } List <string> ilrError = new List <string>(); List <string> larsError = new List <string>(); List <string> albLearnerError = new List <string>(); List <AllbOccupancyModel> models = new List <AllbOccupancyModel>(validLearnersTask.Result.Count); foreach (string validLearnerRefNum in validLearnersTask.Result) { var learner = ilrFileTask.Result?.Learners?.SingleOrDefault(x => string.Equals(x.LearnRefNumber, validLearnerRefNum, StringComparison.OrdinalIgnoreCase)); if (learner == null) { ilrError.Add(validLearnerRefNum); continue; } ALBLearner albLearner = albDataTask.Result?.Learners?.SingleOrDefault(x => string.Equals(x.LearnRefNumber, validLearnerRefNum, StringComparison.OrdinalIgnoreCase)); if (albLearner == null) { albLearnerError.Add(validLearnerRefNum); continue; } if (learner.LearningDeliveries == null) { ilrError.Add(validLearnerRefNum); continue; } foreach (ILearningDelivery learningDelivery in learner.LearningDeliveries) { LearningDelivery albLearningDelivery = albLearner?.LearningDeliveries ?.SingleOrDefault(x => x.AimSeqNumber == learningDelivery.AimSeqNumber); if (!ValidAllbLearningDelivery(learningDelivery, albLearningDelivery)) { continue; } if (!larsLearningDeliveries.TryGetValue(learningDelivery.LearnAimRef, out LarsLearningDelivery larsModel)) { larsError.Add(validLearnerRefNum); continue; } LearningDeliveryValue albLearningDeliveryValue = albLearningDelivery?.LearningDeliveryValue; LearningDeliveryPeriodisedValue albSupportPaymentObj = albLearningDelivery?.LearningDeliveryPeriodisedValues?.SingleOrDefault(x => string.Equals(x.AttributeName, AlbSupportPayment, StringComparison.OrdinalIgnoreCase)); LearningDeliveryPeriodisedValue albAreaUpliftOnProgPaymentObj = albLearningDelivery?.LearningDeliveryPeriodisedValues?.SingleOrDefault(x => string.Equals(x.AttributeName, AlbAreaUpliftOnProgPayment, StringComparison.OrdinalIgnoreCase)); LearningDeliveryPeriodisedValue albAreaUpliftBalPaymentObj = albLearningDelivery?.LearningDeliveryPeriodisedValues?.SingleOrDefault(x => string.Equals(x.AttributeName, AlbAreaUpliftBalPayment, StringComparison.OrdinalIgnoreCase)); ILearningDeliveryFAM[] alb = learningDelivery.LearningDeliveryFAMs?.Where(x => string.Equals(x.LearnDelFAMType, "ALB", StringComparison.OrdinalIgnoreCase)).ToArray(); LearningDeliveryPeriodisedValue[] payments = albLearningDelivery?.LearningDeliveryPeriodisedValues?.Where(IsPayment).ToArray(); LearningDeliveryPeriodisedValue albCode = albLearningDelivery?.LearningDeliveryPeriodisedValues?.SingleOrDefault(x => string.Equals(x.AttributeName, AlbCode, StringComparison.OrdinalIgnoreCase)); var ldms = _stringUtilitiesService.GetArrayEntries(learningDelivery.LearningDeliveryFAMs?.Where(x => string.Equals(x.LearnDelFAMType, "LDM", StringComparison.OrdinalIgnoreCase)), 4); string albBursaryFunding = string.Empty, albDateFrom = string.Empty, albDateTo = string.Empty; if (alb != null && alb.Any()) { albBursaryFunding = alb.Max(x => _stringUtilitiesService.TryGetInt(x.LearnDelFAMCode, 0)).ToString(); albDateFrom = _stringUtilitiesService.GetDateTimeAsString(alb.Min(x => x.LearnDelFAMDateFromNullable ?? DateTime.MinValue), string.Empty, DateTime.MinValue); albDateTo = _stringUtilitiesService.GetDateTimeAsString(alb.Max(x => x.LearnDelFAMDateToNullable ?? DateTime.MinValue), string.Empty, DateTime.MinValue); } models.Add(new AllbOccupancyModel { LearnRefNumber = learner.LearnRefNumber, Uln = learner.ULN, DateOfBirth = learner.DateOfBirthNullable?.ToString("dd/MM/yyyy"), PreMergerUkprn = learner.PrevUKPRNNullable, CampId = learner.CampId, ProvSpecLearnMonA = learner.ProviderSpecLearnerMonitorings ?.FirstOrDefault(x => string.Equals(x.ProvSpecLearnMonOccur, "A", StringComparison.OrdinalIgnoreCase))?.ProvSpecLearnMon, ProvSpecLearnMonB = learner.ProviderSpecLearnerMonitorings ?.FirstOrDefault(x => string.Equals(x.ProvSpecLearnMonOccur, "B", StringComparison.OrdinalIgnoreCase))?.ProvSpecLearnMon, AimSeqNumber = learningDelivery.AimSeqNumber, LearnAimRef = learningDelivery.LearnAimRef, LearnAimRefTitle = larsModel.LearningAimTitle, SwSupAimId = learningDelivery.SWSupAimId, WeightedRate = albLearningDeliveryValue?.WeightedRate, ApplicProgWeightFact = albLearningDeliveryValue?.ApplicProgWeightFact, NotionalNvqLevelV2 = larsModel.NotionalNvqLevel, SectorSubjectAreaTier2 = larsModel.Tier2SectorSubjectArea, AimType = learningDelivery.AimType, FundingModel = learningDelivery.FundModel, PriorLearnFundAdj = learningDelivery.PriorLearnFundAdjNullable, OtherFundAdj = learningDelivery.OtherFundAdjNullable, OrigLearnStartDate = learningDelivery.OrigLearnStartDateNullable?.ToString("dd/MM/yyyy"), LearnStartDate = learningDelivery.LearnStartDate.ToString("dd/MM/yyyy"), LearnPlanEndDate = learningDelivery.LearnPlanEndDate.ToString("dd/MM/yyyy"), CompStatus = learningDelivery.CompStatus, LearnActEndDate = learningDelivery.LearnActEndDateNullable?.ToString("dd/MM/yyyy"), Outcome = learningDelivery.OutcomeNullable, LearnDelFamCodeAdl = learningDelivery.LearningDeliveryFAMs?.SingleOrDefault(x => string.Equals(x.LearnDelFAMType, "ADL", StringComparison.OrdinalIgnoreCase))?.LearnDelFAMCode, AlbBursaryFunding = albBursaryFunding, AlbDateFrom = albDateFrom, AlbDateTo = albDateTo, LearnDelMonA = ldms[0], LearnDelMonB = ldms[1], LearnDelMonC = ldms[2], LearnDelMonD = ldms[3], ProvSpecDelMonA = learningDelivery.ProviderSpecDeliveryMonitorings?.SingleOrDefault(x => string.Equals(x.ProvSpecDelMonOccur, "A", StringComparison.OrdinalIgnoreCase))?.ProvSpecDelMon, ProvSpecDelMonB = learningDelivery.ProviderSpecDeliveryMonitorings?.SingleOrDefault(x => string.Equals(x.ProvSpecDelMonOccur, "B", StringComparison.OrdinalIgnoreCase))?.ProvSpecDelMon, ProvSpecDelMonC = learningDelivery.ProviderSpecDeliveryMonitorings?.SingleOrDefault(x => string.Equals(x.ProvSpecDelMonOccur, "C", StringComparison.OrdinalIgnoreCase))?.ProvSpecDelMon, ProvSpecDelMonD = learningDelivery.ProviderSpecDeliveryMonitorings?.SingleOrDefault(x => string.Equals(x.ProvSpecDelMonOccur, "D", StringComparison.OrdinalIgnoreCase))?.ProvSpecDelMon, PartnerUkprn = learningDelivery.PartnerUKPRNNullable, DelLocPostCode = learningDelivery.DelLocPostCode, AreaCodeFactAdj = albLearningDeliveryValue?.AreaCostFactAdj, FundLine = albLearningDeliveryValue?.FundLine, LiabilityDate = albLearningDeliveryValue?.LiabilityDate?.ToString("dd/MM/yyyy"), PlannedNumOnProgInstalm = albLearningDeliveryValue?.PlannedNumOnProgInstalm, ApplicFactDate = albLearningDeliveryValue?.ApplicFactDate?.ToString("dd/MM/yyyy"), Period1AlbCode = albCode?.Period1, Period1AlbPayment = albSupportPaymentObj?.Period1, Period1AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period1 ?? 0, Period1AlbAreaUplift = albAreaUpliftBalPaymentObj?.Period1 ?? 0, Period1AlbTotal = payments?.Sum(x => x.Period1) ?? 0, Period2AlbCode = albCode?.Period2 ?? 0, Period2AlbPayment = albSupportPaymentObj?.Period2 ?? 0, Period2AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period2 ?? 0, Period2AlbBalPayment = albAreaUpliftBalPaymentObj?.Period2 ?? 0, Period2AlbTotal = payments?.Sum(x => x.Period2) ?? 0, Period3AlbCode = albCode?.Period3 ?? 0, Period3AlbPayment = albSupportPaymentObj?.Period3 ?? 0, Period3AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period3 ?? 0, Period3AlbBalPayment = albAreaUpliftBalPaymentObj?.Period3 ?? 0, Period3AlbTotal = payments?.Sum(x => x.Period3) ?? 0, Period4AlbCode = albCode?.Period4 ?? 0, Period4AlbPayment = albSupportPaymentObj?.Period4 ?? 0, Period4AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period4 ?? 0, Period4AlbBalPayment = albAreaUpliftBalPaymentObj?.Period4 ?? 0, Period4AlbTotal = payments?.Sum(x => x.Period4) ?? 0, Period5AlbCode = albCode?.Period5 ?? 0, Period5AlbPayment = albSupportPaymentObj?.Period5 ?? 0, Period5AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period5 ?? 0, Period5AlbBalPayment = albAreaUpliftBalPaymentObj?.Period5 ?? 0, Period5AlbTotal = payments?.Sum(x => x.Period5) ?? 0, Period6AlbCode = albCode?.Period6 ?? 0, Period6AlbPayment = albSupportPaymentObj?.Period6 ?? 0, Period6AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period6 ?? 0, Period6AlbBalPayment = albAreaUpliftBalPaymentObj?.Period6 ?? 0, Period6AlbTotal = payments?.Sum(x => x.Period6) ?? 0, Period7AlbCode = albCode?.Period7 ?? 0, Period7AlbPayment = albSupportPaymentObj?.Period7 ?? 0, Period7AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period7 ?? 0, Period7AlbBalPayment = albAreaUpliftBalPaymentObj?.Period7 ?? 0, Period7AlbTotal = payments?.Sum(x => x.Period7) ?? 0, Period8AlbCode = albCode?.Period8 ?? 0, Period8AlbPayment = albSupportPaymentObj?.Period8 ?? 0, Period8AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period8 ?? 0, Period8AlbBalPayment = albAreaUpliftBalPaymentObj?.Period8 ?? 0, Period8AlbTotal = payments?.Sum(x => x.Period8) ?? 0, Period9AlbCode = albCode?.Period9 ?? 0, Period9AlbPayment = albSupportPaymentObj?.Period9 ?? 0, Period9AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period9 ?? 0, Period9AlbBalPayment = albAreaUpliftBalPaymentObj?.Period9 ?? 0, Period9AlbTotal = payments?.Sum(x => x.Period9) ?? 0, Period10AlbCode = albCode?.Period10 ?? 0, Period10AlbPayment = albSupportPaymentObj?.Period10 ?? 0, Period10AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period10 ?? 0, Period10AlbBalPayment = albAreaUpliftBalPaymentObj?.Period10 ?? 0, Period10AlbTotal = payments?.Sum(x => x.Period10) ?? 0, Period11AlbCode = albCode?.Period11 ?? 0, Period11AlbPayment = albSupportPaymentObj?.Period11 ?? 0, Period11AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period11 ?? 0, Period11AlbBalPayment = albAreaUpliftBalPaymentObj?.Period11 ?? 0, Period11AlbTotal = payments?.Sum(x => x.Period11) ?? 0, Period12AlbCode = albCode?.Period12 ?? 0, Period12AlbPayment = albSupportPaymentObj?.Period12 ?? 0, Period12AlbOnProgPayment = albAreaUpliftOnProgPaymentObj?.Period12 ?? 0, Period12AlbBalPayment = albAreaUpliftBalPaymentObj?.Period12 ?? 0, Period12AlbTotal = payments?.Sum(x => x.Period12) ?? 0, TotalAlbSupportPayment = (albSupportPaymentObj?.Period1 ?? 0) + (albSupportPaymentObj?.Period2 ?? 0) + (albSupportPaymentObj?.Period3 ?? 0) + (albSupportPaymentObj?.Period4 ?? 0) + (albSupportPaymentObj?.Period5 ?? 0) + (albSupportPaymentObj?.Period6 ?? 0) + (albSupportPaymentObj?.Period7 ?? 0) + (albSupportPaymentObj?.Period8 ?? 0) + (albSupportPaymentObj?.Period9 ?? 0) + (albSupportPaymentObj?.Period10 ?? 0) + (albSupportPaymentObj?.Period11 ?? 0) + (albSupportPaymentObj?.Period12 ?? 0), TotalAlbAreaUplift = (albAreaUpliftOnProgPaymentObj?.Period1 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period2 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period3 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period4 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period5 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period6 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period7 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period8 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period9 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period10 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period11 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period12 ?? 0), TotalAlbBalPayment = (albAreaUpliftBalPaymentObj?.Period1 ?? 0) + (albAreaUpliftBalPaymentObj?.Period2 ?? 0) + (albAreaUpliftBalPaymentObj?.Period3 ?? 0) + (albAreaUpliftBalPaymentObj?.Period4 ?? 0) + (albAreaUpliftBalPaymentObj?.Period5 ?? 0) + (albAreaUpliftBalPaymentObj?.Period6 ?? 0) + (albAreaUpliftBalPaymentObj?.Period7 ?? 0) + (albAreaUpliftBalPaymentObj?.Period8 ?? 0) + (albAreaUpliftBalPaymentObj?.Period9 ?? 0) + (albAreaUpliftBalPaymentObj?.Period10 ?? 0) + (albAreaUpliftBalPaymentObj?.Period11 ?? 0) + (albAreaUpliftBalPaymentObj?.Period12 ?? 0), TotalEarnedCash = (albSupportPaymentObj?.Period1 ?? 0) + (albSupportPaymentObj?.Period2 ?? 0) + (albSupportPaymentObj?.Period3 ?? 0) + (albSupportPaymentObj?.Period4 ?? 0) + (albSupportPaymentObj?.Period5 ?? 0) + (albSupportPaymentObj?.Period6 ?? 0) + (albSupportPaymentObj?.Period7 ?? 0) + (albSupportPaymentObj?.Period8 ?? 0) + (albSupportPaymentObj?.Period9 ?? 0) + (albSupportPaymentObj?.Period10 ?? 0) + (albSupportPaymentObj?.Period11 ?? 0) + (albSupportPaymentObj?.Period12 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period1 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period2 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period3 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period4 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period5 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period6 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period7 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period8 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period9 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period10 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period11 ?? 0) + (albAreaUpliftOnProgPaymentObj?.Period12 ?? 0) + (albAreaUpliftBalPaymentObj?.Period1 ?? 0) + (albAreaUpliftBalPaymentObj?.Period2 ?? 0) + (albAreaUpliftBalPaymentObj?.Period3 ?? 0) + (albAreaUpliftBalPaymentObj?.Period4 ?? 0) + (albAreaUpliftBalPaymentObj?.Period5 ?? 0) + (albAreaUpliftBalPaymentObj?.Period6 ?? 0) + (albAreaUpliftBalPaymentObj?.Period7 ?? 0) + (albAreaUpliftBalPaymentObj?.Period8 ?? 0) + (albAreaUpliftBalPaymentObj?.Period9 ?? 0) + (albAreaUpliftBalPaymentObj?.Period10 ?? 0) + (albAreaUpliftBalPaymentObj?.Period11 ?? 0) + (albAreaUpliftBalPaymentObj?.Period12 ?? 0) }); } } CheckWarnings(ilrError, larsError, albLearnerError); models.Sort(AllbOccupancyModelComparer); return(WriteResults(models)); }
public async Task GenerateReport(IReportServiceContext reportServiceContext, ZipArchive archive, bool isFis, CancellationToken cancellationToken) { Task <IMessage> ilrFileTask = _ilrProviderService.GetIlrFile(reportServiceContext, cancellationToken); Task <string> providerNameTask = _orgProviderService.GetProviderName(reportServiceContext, cancellationToken); Task <List <EasSubmissionValues> > easSubmissionValuesAsync = _easProviderService.GetEasSubmissionValuesAsync(reportServiceContext, cancellationToken); Task <FM35Global> fm35Task = _fm35ProviderService.GetFM35Data(reportServiceContext, cancellationToken); Task <ALBGlobal> albGlobalTask = _allbProviderService.GetAllbData(reportServiceContext, cancellationToken); var lastSubmittedIlrFileTask = _ilrProviderService.GetLastSubmittedIlrFile(reportServiceContext, cancellationToken); var organisationDataTask = _orgProviderService.GetVersionAsync(cancellationToken); var largeEmployerDataTask = _largeEmployerProviderService.GetVersionAsync(cancellationToken); var larsDataTask = _larsProviderService.GetVersionAsync(cancellationToken); var postcodeDataTask = _postcodeProviderService.GetVersionAsync(cancellationToken); await Task.WhenAll( easSubmissionValuesAsync, fm35Task, albGlobalTask, providerNameTask, ilrFileTask, lastSubmittedIlrFileTask, organisationDataTask, largeEmployerDataTask, larsDataTask, postcodeDataTask); var fundingClaimModel = _adultFundingClaimBuilder.BuildAdultFundingClaimModel( _logger, reportServiceContext, fm35Task.Result, easSubmissionValuesAsync.Result, albGlobalTask.Result, providerNameTask.Result, lastSubmittedIlrFileTask.Result, _dateTimeProvider, _intUtilitiesService, ilrFileTask.Result, _versionInfo, organisationDataTask.Result, largeEmployerDataTask.Result, postcodeDataTask.Result, larsDataTask.Result); if (cancellationToken.IsCancellationRequested) { return; } long jobId = reportServiceContext.JobId; string ukPrn = reportServiceContext.Ukprn.ToString(); var externalFileName = GetExternalFilename(ukPrn, jobId, reportServiceContext.SubmissionDateTimeUtc); var fileName = GetFilename(ukPrn, jobId, reportServiceContext.SubmissionDateTimeUtc); var assembly = Assembly.GetExecutingAssembly(); string resourceName = assembly.GetManifestResourceNames().Single(str => str.EndsWith("AdultFundingClaimReportTemplate.xlsx")); var manifestResourceStream = assembly.GetManifestResourceStream(resourceName); Workbook workbook = new Workbook(manifestResourceStream); PopulateWorkbook(workbook, fundingClaimModel, isFis); using (MemoryStream ms = new MemoryStream()) { workbook.Save(ms, SaveFormat.Xlsx); await _streamableKeyValuePersistenceService.SaveAsync($"{externalFileName}.xlsx", ms, cancellationToken); await WriteZipEntry(archive, $"{fileName}.xlsx", ms, cancellationToken); } }