public async Task <ApplyGatewayDetails> GetExternalApiCheckDetails(Guid applicationId)
        {
            var applyGatewayDetails = new ApplyGatewayDetails();

            var ukprn = await _qnaApiClient.GetQuestionTag(applicationId, RoatpWorkflowQuestionTags.UKPRN);

            var ukrlpResults = await _roatpApiClient.GetUkrlpDetails(ukprn);

            if (ukrlpResults == null)
            {
                var message = $"Unable to retrieve UKRLP details for application {applicationId}";
                _logger.LogError(message);
                throw new ServiceUnavailableException(message);
            }

            var ukrlpDetails = ukrlpResults.Results.FirstOrDefault();

            applyGatewayDetails.UkrlpDetails = Mapper.Map <ProviderDetails>(ukrlpDetails);

            var roatpStatus = await _roatpApiClient.GetOrganisationRegisterStatus(ukprn);

            if (roatpStatus == null)
            {
                var message = $"Unable to retrieve RoATP register details for application {applicationId}";
                _logger.LogError(message);
                throw new ServiceUnavailableException(message);
            }

            applyGatewayDetails.RoatpRegisterDetails = roatpStatus;

            var companiesHouseVerification = ukrlpDetails.VerificationDetails
                                             .FirstOrDefault(x => x.VerificationAuthority == VerificationAuthorities.CompaniesHouseAuthority);

            if (companiesHouseVerification != null)
            {
                await LookupCompaniesHouseDetails(applyGatewayDetails, companiesHouseVerification.VerificationId);
            }
            var charityCommissionVerification = ukrlpDetails.VerificationDetails
                                                .FirstOrDefault(x => x.VerificationAuthority == VerificationAuthorities.CharityCommissionAuthority);

            if (charityCommissionVerification != null)
            {
                await LookupCharityCommissionDetails(applyGatewayDetails, charityCommissionVerification.VerificationId);
            }
            applyGatewayDetails.SourcesCheckedOn = DateTime.Now;

            return(applyGatewayDetails);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> UkrlpLookup(string ukprn)
        {
            UkprnLookupResponse providerData;

            try
            {
                providerData = await _retryPolicy.ExecuteAsync(context => _apiClient.GetUkrlpDetails(ukprn), new Context());
            }
            catch (Exception ex)
            {
                _logger.LogError("Unable to retrieve results from UKRLP", ex);
                providerData = new UkprnLookupResponse
                {
                    Success = false,
                    Results = new List <ProviderDetails>()
                };
            }
            return(Ok(providerData));
        }