private async Task GenerateWorkBookAsync( FundingClaimsSubmissionsModel model, string templateFileName, string dataSource, IOperationsReportServiceContext reportServiceContext, string reportFileName, CancellationToken cancellationToken) { var assembly = Assembly.GetExecutingAssembly(); string resourceName = assembly.GetManifestResourceNames().Single(str => str.EndsWith(templateFileName)); using (Stream manifestResourceStream = assembly.GetManifestResourceStream(resourceName)) { var workbook = _excelFileService.BindExcelTemplateToWorkbook(model, dataSource, manifestResourceStream); await _excelFileService.SaveWorkbookAsync(workbook, reportFileName, reportServiceContext.Container, cancellationToken); } }
public FundingClaimsSubmissionsModel Build( CollectionDetail collectionDetail, ICollection <OrganisationCollection> expectedProviders, ICollection <FundingClaimsSubmission> fundingClaimsSubmissions, IDictionary <int, OrgModel> orgDetails, CancellationToken cancellationToken) { var submittedProviderUkprns = fundingClaimsSubmissions.Select(x => x.Ukprn).ToList(); var expectedUkprns = expectedProviders.Select(x => (long)x.Ukprn).ToList(); var expectedProvidersNotSubmitted = expectedProviders.Where(x => !submittedProviderUkprns.Contains(x.Ukprn)).ToList(); var expectedProvidersSubmitted = expectedProviders.Where(x => submittedProviderUkprns.Contains(x.Ukprn)).ToList(); var unexpectedReturningProviders = submittedProviderUkprns.Where(x => !expectedUkprns.Contains(x)).ToList(); var model = new FundingClaimsSubmissionsModel { FundingClaim = collectionDetail.DisplayTitle, ReportRun = _dateTimeProvider.ConvertUtcToUk(_dateTimeProvider.GetNowUtc()).LongDateStringFormat(), TotalNoOfReturningProviders = submittedProviderUkprns.Count, NoOfProvidersExpectedToReturn = expectedUkprns.Count, NoOfReturningExpectedProviders = expectedProvidersSubmitted.Count, NoOfExpectedProvidersNotReturning = expectedProvidersNotSubmitted.Count, NoOfReturningUnexpectedProviders = unexpectedReturningProviders.Count }; var submissionsDetails = new List <FundingClaimsSubmissionsDetail>(); foreach (var submission in fundingClaimsSubmissions) { var detail = new FundingClaimsSubmissionsDetail { UkPrn = submission.Ukprn, ProviderName = orgDetails.GetValueOrDefault((int)submission.Ukprn)?.Name, ExpectedToReturnInCurrentPeriod = IsExpectedToReturn(submission.Ukprn, expectedProviders), ReturnedInCurrentPeriod = submission.IsSubmitted ? "Yes" : "No", DateLatestClaimSubmitted = submission.SubmittedDateTimeUtc?.LongDateStringFormat(), CovidResponse = BuildCovidResponse(submission.CovidDeclaration), Signed = BuildSignedResponse(submission.IsSigned, submission.IsSubmitted) }; detail.ALLBC1920ContractValue = GetContractValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.ALLBC1920, submission.SubmissionContractDetails); detail.ALLBC1920Claimed = GetClaimedValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.ALLBC1920, submission.SubmissionValues); detail.AEBCASCL1920ContractValue = GetContractValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.AEBCASCL1920, submission.SubmissionContractDetails); detail.AEBCASCL1920Claimed = GetClaimedValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.AEBCASCL1920, submission.SubmissionValues); detail.AEBC19TRN1920ContractValue = GetContractValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.AEBC19TRN1920, submission.SubmissionContractDetails); detail.AEBC19TRN1920Claimed = GetClaimedValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.AEBC19TRN1920, submission.SubmissionValues); detail.AEBASLS1920ProcuredContractValue = GetContractValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.AEBASLS1920, submission.SubmissionContractDetails); detail.AEBASLS1920ProcuredClaimed = GetClaimedValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.AEBASLS1920, submission.SubmissionValues); detail.AEB19TRLS1920ProcuredContractValue = GetContractValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.AEB19TRLS1920, submission.SubmissionContractDetails); detail.AEB19TRLS1920ProcuredClaimed = GetClaimedValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.AEB19TRLS1920, submission.SubmissionValues); detail.ED1920ContractValue1619 = GetContractValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.C1619ED1920, submission.SubmissionContractDetails); detail.ED1920Claimed1619 = GetClaimedValue(submission.SubmissionId, FundingStreamPeriodCodeConstants.C1619ED1920, submission.SubmissionValues); submissionsDetails.Add(detail); } foreach (var provider in expectedProvidersNotSubmitted) { var detail = new FundingClaimsSubmissionsDetail { UkPrn = provider.Ukprn, ProviderName = orgDetails.GetValueOrDefault(provider.Ukprn)?.Name, ExpectedToReturnInCurrentPeriod = "Yes", ReturnedInCurrentPeriod = "No", CovidResponse = "N/A", }; submissionsDetails.Add(detail); } model.FundingClaimsSubmissionsDetails = submissionsDetails.OrderBy(x => x.ProviderName).ToList(); return(model); }