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); }
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")); }