public RoatpFinancialApplicationViewModel(RoatpApply application, FinancialReviewDetails financialReviewDetails, Section parentCompanySection, Section activelyTradingSection, Section organisationTypeSection, List <Section> financialSections) { ApplicationId = application.ApplicationId; OrgId = application.OrganisationId; ApplicationStatus = application.ApplicationStatus; Sections = SetupSections(parentCompanySection, activelyTradingSection, organisationTypeSection, financialSections); SetupGradeAndFinancialDueDate(financialReviewDetails); if (application.ApplyData?.ApplyDetails != null) { ApplicationReference = application.ApplyData.ApplyDetails.ReferenceNumber; ApplicationRoute = application.ApplyData.ApplyDetails.ProviderRouteName; Ukprn = application.ApplyData.ApplyDetails.UKPRN; OrganisationName = application.ApplyData.ApplyDetails.OrganisationName; SubmittedDate = application.ApplyData.ApplyDetails.ApplicationSubmittedOn; if (application.ApplicationStatus == AssessorService.ApplyTypes.Roatp.ApplicationStatus.Withdrawn) { ApplicationClosedOn = application.ApplyData.ApplyDetails.ApplicationWithdrawnOn; ApplicationClosedBy = application.ApplyData.ApplyDetails.ApplicationWithdrawnBy; } else if (application.ApplicationStatus == AssessorService.ApplyTypes.Roatp.ApplicationStatus.Removed) { ApplicationClosedOn = application.ApplyData.ApplyDetails.ApplicationRemovedOn; ApplicationClosedBy = application.ApplyData.ApplyDetails.ApplicationRemovedBy; } } ApplicationComments = application.Comments; ApplicationExternalComments = application.ExternalComments; SetupDeclaredInApplication(application.ApplyData); }
private async Task <List <Section> > GetFinancialSections(RoatpApply applicationFromAssessor) { const string CompanyFhaSectionTitle = "Organisation's financial health"; const string ParentCompanyFhaSectionTitle = "UK ultimate parent company's financial health"; var financialSections = new List <Section>(); var applicationId = applicationFromAssessor.ApplicationId; var applicationSequences = applicationFromAssessor.ApplyData?.Sequences; var roatpSequences = await _applyApiClient.GetRoatpSequences(); var financialSequences = roatpSequences.Where(x => x.Roles.Contains(Roles.ProviderRiskAssuranceTeam)); foreach (var sequence in financialSequences) { var qnaSequence = await _qnaApiClient.GetSequenceBySequenceNo(applicationId, sequence.Id); var qnaSections = await _qnaApiClient.GetSections(applicationId, qnaSequence.Id); foreach (var section in qnaSections) { var roatpSequence = roatpSequences.FirstOrDefault(x => x.Id == sequence.Id); if (!roatpSequence.ExcludeSections.Contains(section.SectionNo.ToString()) && IsRequiredSection(applicationSequences, section)) { // Ensure at least one active page is answered if (section.QnAData.Pages.Any(p => p.Active && p.Complete)) { // APR-1477 - adjust title for Assessor if (section.SequenceNo == RoatpQnaConstants.RoatpSequences.FinancialEvidence && section.SectionNo == RoatpQnaConstants.RoatpSections.FinancialEvidence.YourOrganisationsFinancialEvidence) { section.LinkTitle = CompanyFhaSectionTitle; section.Title = CompanyFhaSectionTitle; } else if (section.SequenceNo == RoatpQnaConstants.RoatpSequences.FinancialEvidence && section.SectionNo == RoatpQnaConstants.RoatpSections.FinancialEvidence.YourUkUltimateParentCompanysFinancialEvidence) { section.LinkTitle = ParentCompanyFhaSectionTitle; section.Title = ParentCompanyFhaSectionTitle; } // APR-1606 - Display in PageId order section.QnAData.Pages = section.QnAData.Pages.OrderBy(p => p.PageId).ToList(); financialSections.Add(section); } } } } return(financialSections); }
private async Task <RoatpFinancialApplicationViewModel> CreateRoatpFinancialApplicationViewModel(RoatpApply application) { if (application is null) { return(new RoatpFinancialApplicationViewModel()); } var parentCompanySection = await GetParentCompanySection(application.ApplicationId); var activelyTradingSection = await GetActivelyTradingSection(application.ApplicationId); var organisationTypeSection = await GetOrganisationTypeSection(application.ApplicationId); var financialSections = await GetFinancialSections(application); return(new RoatpFinancialApplicationViewModel(application, parentCompanySection, activelyTradingSection, organisationTypeSection, financialSections)); }
private async Task <RoatpFinancialApplicationViewModel> RebuildApplicationViewModel(RoatpFinancialClarificationViewModel vm, RoatpApply application, FinancialReviewDetails financialReviewDetails) { var clarificationVm = await CreateRoatpFinancialApplicationViewModel(application); clarificationVm.ApplicantEmailAddress = vm.ApplicantEmailAddress; clarificationVm.ClarificationComments = vm.ClarificationComments; clarificationVm.FinancialReviewDetails = financialReviewDetails; clarificationVm.OutstandingFinancialDueDate = vm.OutstandingFinancialDueDate; clarificationVm.GoodFinancialDueDate = vm.GoodFinancialDueDate; clarificationVm.SatisfactoryFinancialDueDate = vm.SatisfactoryFinancialDueDate; clarificationVm.InadequateComments = vm.InadequateComments; clarificationVm.InadequateExternalComments = vm.InadequateExternalComments; return(clarificationVm); }
private async Task <RoatpFinancialClarificationViewModel> ProcessUploadedFilesAndRebuildViewModel(Guid applicationId, RoatpFinancialClarificationViewModel vm, RoatpApply application) { var financialReviewDets = vm.FinancialReviewDetails; if (vm.FilesToUpload != null && vm.FilesToUpload.Count > 0) { var fileToUpload = vm.FilesToUpload[0].FileName; if (!FileAlreadyInClarifications(financialReviewDets.ClarificationFiles, fileToUpload)) { var fileUploadedSuccessfully = await _applyApiClient.UploadClarificationFile(applicationId, _contextAccessor.HttpContext.User.UserId(), vm.FilesToUpload); if (fileUploadedSuccessfully) { if (financialReviewDets.ClarificationFiles == null) { financialReviewDets.ClarificationFiles = new List <ClarificationFile>(); } financialReviewDets.ClarificationFiles.Add(new ClarificationFile { Filename = fileToUpload }); } } } var clarificationVm = await RebuildApplicationViewModel(vm, application, financialReviewDets); var newClarificationVm = ConvertFinancialApplicationToFinancialClarificationViewModel(clarificationVm, vm.InternalComments); return(newClarificationVm); }
private async Task <RoatpFinancialClarificationViewModel> ProcessErrorMessagesAndRebuildModel(RoatpFinancialClarificationViewModel vm, RoatpApply application, ValidationResponse validationResponse) { var applicationViewModel = await RebuildApplicationViewModel(vm, application, vm.FinancialReviewDetails); var newClarificationViewModel = ConvertFinancialApplicationToFinancialClarificationViewModel(applicationViewModel, vm.InternalComments); newClarificationViewModel.ErrorMessages = validationResponse.Errors; return(newClarificationViewModel); }
private async Task <RoatpFinancialClarificationViewModel> RemoveUploadedFileAndRebuildViewModel(Guid applicationId, RoatpFinancialClarificationViewModel vm, string removeClarificationFileName, RoatpApply application) { var fileRemoved = await _applyApiClient.RemoveClarificationFile(applicationId, _contextAccessor.HttpContext.User.UserId(), removeClarificationFileName); var financialReviewDets = vm.FinancialReviewDetails; if (fileRemoved) { var clarificationFiles = financialReviewDets.ClarificationFiles; var newClarificationFiles = new List <ClarificationFile>(); if (clarificationFiles != null) { foreach (var file in clarificationFiles) { if (file.Filename != removeClarificationFileName) { newClarificationFiles.Add(file); } } financialReviewDets.ClarificationFiles = newClarificationFiles; } } var applicationVm = await RebuildApplicationViewModel(vm, application, financialReviewDets); var newClarificationVm = ConvertFinancialApplicationToFinancialClarificationViewModel(applicationVm, vm.InternalComments); return(newClarificationVm); }