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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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));
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }
예제 #7
0
        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);
        }