Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #4
0
 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
     });
 }
Exemple #5
0
        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);
        }