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