public UpdateExternalApiCheckDetailsRequest(Guid applicationId, ApplyGatewayDetails applyGatewayDetails, string userId, string userName)
 {
     ApplicationId       = applicationId;
     ApplyGatewayDetails = applyGatewayDetails;
     UserId   = userId;
     UserName = userName;
 }
Exemplo n.º 2
0
        private async Task LookupCompaniesHouseDetails(ApplyGatewayDetails applyGatewayDetails, string companyNumber)
        {
            var companyDetails = await _companiesHouseApiClient.GetCompany(companyNumber);

            if (companyDetails == null)
            {
                var message = $"Unable to retrieve Companies House details for company number {companyNumber}";
                _logger.LogError(message);
                throw new ServiceUnavailableException(message);
            }
            applyGatewayDetails.CompaniesHouseDetails = Mapper.Map <CompaniesHouseSummary>(companyDetails.Response);
        }
Exemplo n.º 3
0
        private async Task LookupCharityCommissionDetails(ApplyGatewayDetails applyGatewayDetails, string charityNumberFromUkrlp)
        {
            if (int.TryParse(charityNumberFromUkrlp, out var charityNumber))
            {
                var charityDetails = await _charityCommissionClient.GetCharity(charityNumber);

                if (charityDetails == null)
                {
                    var message = $"Unable to retrieve Charity Commission details for charity number {charityNumber}";
                    _logger.LogError(message);
                    throw new ServiceUnavailableException(message);
                }
                applyGatewayDetails.CharityCommissionDetails = Mapper.Map <CharityCommissionSummary>(charityDetails);
            }
        }
        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);
        }
        private async Task LookupCompaniesHouseDetails(ApplyGatewayDetails applyGatewayDetails, string companyNumber)
        {
            ApiResponse <Types.CompaniesHouse.Company> companyDetails = null;

            try
            {
                companyDetails = await _companiesHouseApiClient.GetCompany(companyNumber);
            }
            catch (Exception ex)
            {
                var message = $"Unable to retrieve results from companies house for company number {companyNumber}";
                _logger.LogError(message, ex);
                throw new ServiceUnavailableException(message);
            }

            if (string.IsNullOrEmpty(companyDetails?.Response?.CompanyName))
            {
                var message = $"Unable to retrieve Companies House details for company number {companyNumber}";
                _logger.LogError(message);
                throw new ServiceUnavailableException(message);
            }
            applyGatewayDetails.CompaniesHouseDetails = Mapper.Map <CompaniesHouseSummary>(companyDetails.Response);
        }
        private async Task LookupCharityCommissionDetails(ApplyGatewayDetails applyGatewayDetails, string charityNumberFromUkrlp)
        {
            if (!int.TryParse(charityNumberFromUkrlp, out var charityNumber))
            {
                var message =
                    $"Charity registration number cannot be parsed into a number, skipping getting details from charity commission for '{ charityNumberFromUkrlp}'";

                _logger.LogInformation(message);
                return;
            }

            try
            {
                var charityDetails = await _outerApiClient.GetCharityDetails(charityNumber);

                applyGatewayDetails.CharityCommissionDetails = Mapper.Map <CharityCommissionSummary>(charityDetails);
            }
            catch (Exception ex)
            {
                var message = $"Unable to retrieve Charity Commission details for charity number {charityNumber} based on charity number from uklrp: {charityNumberFromUkrlp}";
                _logger.LogError(ex, message);
                throw new ServiceUnavailableException(message);
            }
        }