public async Task <RoatpRegistrationDetails> GetRegistrationDetails(Guid applicationId) { _logger.LogInformation($"Retrieving registration details for application id {applicationId}"); var providerTypeId = await _qnaApiClient.GetAnswerByTag(applicationId, RoatpWorkflowQuestionTags.ProviderRoute); int providerTypeIdValue; int.TryParse(providerTypeId.Value, out providerTypeIdValue); var registrationDetails = new RoatpRegistrationDetails { ProviderTypeId = providerTypeIdValue }; var preamblePage = await _qnaApiClient.GetPageBySectionNo(applicationId, RoatpWorkflowSequenceIds.Preamble, RoatpWorkflowSectionIds.Preamble, RoatpWorkflowPageIds.Preamble); var preambleAnswers = preamblePage.PageOfAnswers.FirstOrDefault(); var legalNameAnswer = preambleAnswers.Answers.FirstOrDefault(x => x.QuestionId == RoatpPreambleQuestionIdConstants.UkrlpLegalName); var tradingNameAnswer = preambleAnswers.Answers.FirstOrDefault(x => x.QuestionId == RoatpPreambleQuestionIdConstants.UkrlpTradingName); var ukprnAnswer = preambleAnswers.Answers.FirstOrDefault(x => x.QuestionId == RoatpPreambleQuestionIdConstants.UKPRN); registrationDetails.LegalName = legalNameAnswer.Value; registrationDetails.TradingName = tradingNameAnswer?.Value; registrationDetails.UKPRN = ukprnAnswer.Value; registrationDetails.OrganisationTypeId = await MapOrganisationDetailsQuestionsToRoatpOrganisationType(applicationId, registrationDetails.ProviderTypeId); var verifiedCompanyAnswer = preambleAnswers.Answers.FirstOrDefault(x => x.QuestionId == RoatpPreambleQuestionIdConstants.UkrlpVerificationCompany); if (verifiedCompanyAnswer != null && verifiedCompanyAnswer.Value == "TRUE") { var companyNumberAnswer = preambleAnswers.Answers.FirstOrDefault(x => x.QuestionId == RoatpPreambleQuestionIdConstants.UkrlpVerificationCompanyNumber); registrationDetails.CompanyNumber = companyNumberAnswer.Value; } var verifiedCharityAnswer = preambleAnswers.Answers.FirstOrDefault(x => x.QuestionId == RoatpPreambleQuestionIdConstants.UkrlpVerificationCharity); if (verifiedCharityAnswer != null && verifiedCharityAnswer.Value == "TRUE") { var charityNumberAnswer = preambleAnswers.Answers.FirstOrDefault(x => x.QuestionId == RoatpPreambleQuestionIdConstants.UkrlpVerificationCharityRegNumber); registrationDetails.CharityNumber = charityNumberAnswer.Value; } return(registrationDetails); }
public void Before_each_test() { _applicationApiClient = new Mock <IApplyApiClient>(); _roatpRegisterApiClient = new Mock <IRoatpRegisterApiClient>(); _logger = new Mock <ILogger <ApplicationOutcomeOrchestrator> >(); _applicationId = Guid.NewGuid(); _registrationDetails = new RoatpRegistrationDetails { CharityNumber = "112233", CompanyNumber = "1122111", LegalName = "Legal Name", OrganisationTypeId = 2, ProviderTypeId = 1, TradingName = "Trading as name", UKPRN = "19902000" }; _registerStatus = new OrganisationRegisterStatus { OrganisationId = Guid.NewGuid(), UkprnOnRegister = true }; _applicationApiClient.Setup(x => x.GetRegistrationDetails(_applicationId)).ReturnsAsync(_registrationDetails); _applicationApiClient.Setup(x => x.RecordOutcome(It.Is <RecordOversightOutcomeCommand>(y => y.ApplicationId == _applicationId))).ReturnsAsync(true); _applicationApiClient .Setup(x => x.RecordGatewayFailOutcome( It.Is <RecordOversightGatewayFailOutcomeCommand>(y => y.ApplicationId == _applicationId))) .Returns(Task.CompletedTask); _roatpRegisterApiClient.Setup(x => x.CreateOrganisation(It.Is <CreateRoatpOrganisationRequest>(y => y.Ukprn == _registrationDetails.UKPRN))).ReturnsAsync(() => true); _roatpRegisterApiClient.Setup(x => x.GetOrganisationRegisterStatus( It.Is <GetOrganisationRegisterStatusRequest>(r => r.UKPRN == _registrationDetails.UKPRN))) .ReturnsAsync(() => _registerStatus); _orchestrator = new ApplicationOutcomeOrchestrator(_applicationApiClient.Object, _roatpRegisterApiClient.Object, _logger.Object); }
public async Task Get_registration_details_retrieves_information_for_adding_provider_to_register() { var applicationId = Guid.NewGuid(); var response = new RoatpRegistrationDetails { UKPRN = "10001234", LegalName = "Legal Name", TradingName = "Trading Name", ProviderTypeId = 1, OrganisationTypeId = 2, CompanyNumber = "5550003", CharityNumber = "125622" }; _service.Setup(x => x.GetRegistrationDetails(applicationId)).ReturnsAsync(response); var result = await _controller.GetRegistrationDetails(applicationId); result.Value.UKPRN.Should().Be(response.UKPRN); }
private static CreateRoatpOrganisationRequest BuildCreateOrganisationRequest(string userName, RoatpRegistrationDetails registrationDetails) { return(new CreateRoatpOrganisationRequest { ApplicationDeterminedDate = DateTime.UtcNow.Date, CharityNumber = registrationDetails.CharityNumber, CompanyNumber = registrationDetails.CompanyNumber, FinancialTrackRecord = true, LegalName = registrationDetails.LegalName, NonLevyContract = false, OrganisationTypeId = registrationDetails.OrganisationTypeId, ParentCompanyGuarantee = false, ProviderTypeId = registrationDetails.ProviderTypeId, SourceIsUKRLP = true, StatusDate = DateTime.Now, TradingName = registrationDetails.TradingName, Ukprn = registrationDetails.UKPRN, Username = userName }); }
private async Task <bool> RecordInRoatp(Guid applicationId, string appealStatus, string userId, string userName, OrganisationRegisterStatus registerStatus, RoatpRegistrationDetails registrationDetails) { var application = await _applicationApiClient.GetApplicationDetails(applicationId); if (application.GatewayReviewStatus != GatewayReviewStatus.Fail) { if (registerStatus?.OrganisationId != null && (appealStatus == AppealStatus.SuccessfulAlreadyActive || appealStatus == AppealStatus.SuccessfulFitnessForFunding)) { var updateOrganisationRequest = new UpdateOrganisationRequest { ApplicationDeterminedDate = DateTime.UtcNow.Date, LegalName = registrationDetails.LegalName, OrganisationId = registerStatus.OrganisationId.Value, Username = userName, CharityNumber = registrationDetails.CharityNumber, CompanyNumber = registrationDetails.CompanyNumber, OrganisationTypeId = registrationDetails.OrganisationTypeId, ProviderTypeId = registrationDetails.ProviderTypeId, TradingName = registrationDetails.TradingName, }; _logger.LogInformation($"Updating organisation details for application {applicationId}"); return(await _registerApiClient.UpdateOrganisation(updateOrganisationRequest)); } if (appealStatus == AppealStatus.Successful) { var request = BuildCreateOrganisationRequest(userName, registrationDetails); return(await _registerApiClient.CreateOrganisation(request)); } } return(true); }