示例#1
0
        public void check_organisation_status_orchestrator_builds_with_company_details_only()
        {
            var applicationId = Guid.NewGuid();

            var commonDetails = new GatewayCommonDetails
            {
                ApplicationSubmittedOn = DateTime.Now.AddDays(-3),
                SourcesCheckedOn       = DateTime.Now,
                LegalName = UKRLPLegalName,
                Ukprn     = ukprn
            };

            _applyApiClient.Setup(x => x.GetPageCommonDetails(applicationId, It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(commonDetails);

            var ukrlpDetails = new ProviderDetails
            {
                ProviderName                = ProviderName,
                ProviderStatus              = ProviderStatus,
                VerifiedByCompaniesHouse    = true,
                VerifiedbyCharityCommission = false
            };

            _applyApiClient.Setup(x => x.GetUkrlpDetails(applicationId)).ReturnsAsync(ukrlpDetails);

            var companiesHouseDetails = new CompaniesHouseSummary
            {
                Status = CompanyStatus
            };

            _applyApiClient.Setup(x => x.GetCompaniesHouseDetails(applicationId)).ReturnsAsync(companiesHouseDetails);

            var charityDetails = new CharityCommissionSummary
            {
                Status = null
            };

            _applyApiClient.Setup(x => x.GetCharityCommissionDetails(applicationId)).ReturnsAsync(charityDetails);

            var request = new GetOrganisationStatusRequest(applicationId, UserId, UserName);

            var response = _orchestrator.GetOrganisationStatusViewModel(request);

            var viewModel = response.Result;

            Assert.AreEqual(ProviderStatusWithCapitalisation, viewModel.UkrlpStatus);
            Assert.AreEqual(CompanyStatusWithCapitalisation, viewModel.CompaniesHouseStatus);
            Assert.IsNull(viewModel.CharityCommissionStatus);
            Assert.AreEqual(ukprn, viewModel.Ukprn);

            _applyApiClient.Verify(x => x.GetUkrlpDetails(applicationId), Times.Once);
            _applyApiClient.Verify(x => x.GetCompaniesHouseDetails(applicationId), Times.Once);
            _applyApiClient.Verify(x => x.GetCharityCommissionDetails(applicationId), Times.Never);
        }
        public void check_legal_name_orchestrator_builds_with_company_and_charity_details()
        {
            var applicationId = Guid.NewGuid();

            var commonDetails = new GatewayCommonDetails
            {
                ApplicationSubmittedOn = DateTime.Now.AddDays(-3),
                SourcesCheckedOn       = DateTime.Now,
                LegalName = UKRLPLegalName,
                Ukprn     = ukprn
            };

            _applyApiClient.Setup(x => x.GetPageCommonDetails(applicationId, It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(commonDetails);

            var ukrlpDetails = new ProviderDetails
            {
                ProviderName = ProviderName,
                VerifiedbyCharityCommission = true,
                VerifiedByCompaniesHouse    = true
            };

            _applyApiClient.Setup(x => x.GetUkrlpDetails(applicationId)).ReturnsAsync(ukrlpDetails);

            var companiesHouseDetails = new CompaniesHouseSummary
            {
                CompanyName = CompanyName
            };

            _applyApiClient.Setup(x => x.GetCompaniesHouseDetails(applicationId)).ReturnsAsync(companiesHouseDetails);

            var charityDetails = new CharityCommissionSummary
            {
                CharityName = CharityName
            };

            _applyApiClient.Setup(x => x.GetCharityCommissionDetails(applicationId)).ReturnsAsync(charityDetails);

            var request = new GetLegalNameRequest(applicationId, UserId, UserName);

            var response = _orchestrator.GetLegalNameViewModel(request);

            var viewModel = response.Result;

            Assert.AreEqual(UKRLPLegalName, viewModel.ApplyLegalName);
            Assert.AreEqual(ProviderName, viewModel.UkrlpLegalName);
            Assert.AreEqual(CompanyName, viewModel.CompaniesHouseLegalName);
            Assert.AreEqual(CharityName, viewModel.CharityCommissionLegalName);
            Assert.AreEqual(ukprn, viewModel.Ukprn);
            _applyApiClient.Verify(x => x.GetUkrlpDetails(applicationId), Times.Once);
            _applyApiClient.Verify(x => x.GetCompaniesHouseDetails(applicationId), Times.Once);
            _applyApiClient.Verify(x => x.GetCharityCommissionDetails(applicationId), Times.Once);
        }
示例#3
0
        public async Task <IActionResult> VerifyOrganisationDetails()
        {
            var applicationDetails = _sessionService.Get <ApplicationDetails>(ApplicationDetailsKey);
            var providerDetails    = applicationDetails.UkrlpLookupDetails;

            var existingApplicationStatuses = await _applicationApiClient.GetExistingApplicationStatus(providerDetails.UKPRN);

            if (existingApplicationStatuses.Any(x => x.Status == ApplicationStatus.InProgress))
            {
                return(RedirectToAction("ApplicationInProgress", "RoatpShutterPages", new ExistingApplicationViewModel {
                    UKPRN = providerDetails.UKPRN
                }));
            }
            else if (existingApplicationStatuses.Any(x => x.Status == ApplicationStatus.Submitted || x.Status == ApplicationStatus.GatewayAssessed))
            {
                return(RedirectToAction("ApplicationPreviouslySubmitted", "RoatpShutterPages", new ExistingApplicationViewModel {
                    UKPRN = providerDetails.UKPRN
                }));
            }

            CompaniesHouseSummary companyDetails = null;
            Charity charityDetails = null;

            if (providerDetails.VerifiedByCompaniesHouse)
            {
                var companiesHouseVerification = providerDetails.VerificationDetails.FirstOrDefault(x =>
                                                                                                    x.VerificationAuthority == VerificationAuthorities.CompaniesHouseAuthority);

                companyDetails = await _companiesHouseApiClient.GetCompanyDetails(companiesHouseVerification.VerificationId);

                if ((companyDetails.Directors == null || companyDetails.Directors.Count == 0) &&
                    (companyDetails.PersonsWithSignificantControl == null ||
                     companyDetails.PersonsWithSignificantControl.Count == 0))
                {
                    companyDetails.ManualEntryRequired = true;
                }

                if (companyDetails.Status == CompaniesHouseSummary.ServiceUnavailable)
                {
                    return(RedirectToAction("CompaniesHouseNotAvailable", "RoatpShutterPages"));
                }
                else if (companyDetails.Status == CompaniesHouseSummary.CompanyStatusNotFound)
                {
                    return(RedirectToAction("CompanyNotFound", "RoatpShutterPages"));
                }
                else if (!CompaniesHouseValidator.CompaniesHouseStatusValid(providerDetails.UKPRN, companyDetails.Status, _logger))
                {
                    return(RedirectToAction("CompanyNotFound", "RoatpShutterPages"));
                }

                applicationDetails.CompanySummary = companyDetails;
            }

            if (applicationDetails.UkrlpLookupDetails.VerifiedbyCharityCommission)
            {
                var charityCommissionVerification = providerDetails.VerificationDetails.FirstOrDefault(x =>
                                                                                                       x.VerificationAuthority == VerificationAuthorities.CharityCommissionAuthority);

                string verificationId = charityCommissionVerification.VerificationId;
                if (verificationId.Contains("-"))
                {
                    verificationId = verificationId.Substring(0, verificationId.IndexOf("-"));
                }

                if (IsEnglandAndWalesCharityCommissionNumber(verificationId))
                {
                    bool isValidCharityNumber = int.TryParse(verificationId, out var charityNumber);
                    if (!isValidCharityNumber)
                    {
                        return(RedirectToAction("CharityNotFound", "RoatpShutterPages"));
                    }

                    try
                    {
                        charityDetails = await _outerApiClient.GetCharityDetails(charityNumber);
                    }
                    catch (Exception ex)
                    {
                        _logger.LogError(ex, "Error fetching charity details for charity number `{charityNumber}`", charityNumber);
                        return(RedirectToAction("CharityCommissionNotAvailable", "RoatpShutterPages"));
                    }

                    if (!charityDetails.IsActivelyTrading)
                    {
                        return(RedirectToAction("CharityNotFound", "RoatpShutterPages"));
                    }

                    applicationDetails.CharitySummary = Mapper.Map <CharityCommissionSummary>(charityDetails);
                }
                else
                {
                    applicationDetails.CharitySummary = new CharityCommissionSummary
                    {
                        TrusteeManualEntryRequired = true
                    };
                }
            }

            var roatpRegisterStatus = await _roatpApiClient.GetOrganisationRegisterStatus(applicationDetails.UKPRN);

            applicationDetails.RoatpRegisterStatus = roatpRegisterStatus;

            _sessionService.Set(ApplicationDetailsKey, applicationDetails);

            if (ProviderEligibleToChangeRoute(roatpRegisterStatus))
            {
                return(RedirectToAction("ProviderAlreadyOnRegister"));
            }

            return(RedirectToAction("SelectApplicationRoute"));
        }