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);
            }
        }
コード例 #2
0
        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);
        }