Exemple #1
0
        public async Task <EnrichedLoanRequest> PerformCreditCheck(LoanRequest loanRequest)
        {
            if (loanRequest.RequestedLoanAmount == 0 || string.IsNullOrWhiteSpace(loanRequest.CitizenServiceNumber))
            {
                throw new ArgumentException("Requested loan amount must be > 0 and BSN must be provided");
            }

            EnrichedLoanRequest enrichedLoanRequest = default(EnrichedLoanRequest);

            enrichedLoanRequest = await CreditCheckLoanRequest(loanRequest, enrichedLoanRequest);

            return(await Task.FromResult(enrichedLoanRequest));
        }
Exemple #2
0
        private async Task <EnrichedLoanRequest> ProcessSuccessResponse(LoanRequest loanRequest, EnrichedLoanRequest enrichedLoanRequest, HttpResponseMessage response)
        {
            var content = await response.Content.ReadAsStringAsync();

            dynamic obj = JsonConvert.DeserializeObject(content);

            enrichedLoanRequest = new EnrichedLoanRequest();
            enrichedLoanRequest.OriginalLoanRequest = loanRequest;
            enrichedLoanRequest.CreditCheckReport   = new CreditCheckReport
            {
                CitizenServiceNumber = loanRequest.CitizenServiceNumber,
                CreditRating         = obj.CreditRating,
                CreditScore          = obj.Score,
                Description          = obj.Status
            };
            logger.Information(
                "Credit check service returned {code} {response} for {@request}",
                response.StatusCode,
                response.ReasonPhrase,
                loanRequest);
            return(enrichedLoanRequest);
        }
Exemple #3
0
        private async Task <EnrichedLoanRequest> CreditCheckLoanRequest(LoanRequest loanRequest, EnrichedLoanRequest enrichedLoanRequest)
        {
            using (var httpClient = new HttpClient(httpMessageHandlerFactory.Create(), true))
            {
                httpClient.BaseAddress = httpMessageHandlerFactory.BaseUri;

                var stringContent = new StringContent(JsonConvert.SerializeObject(loanRequest), Encoding.UTF8, "application/json");
                httpClient.DefaultRequestHeaders.Add("Request-Id", loanRequest.CitizenServiceNumber);
                logger.Information("Contacting credit check agency...");
                var response = await httpClient.PutAsync("api/creditcheck", stringContent);

                if (response.IsSuccessStatusCode)
                {
                    enrichedLoanRequest = await ProcessSuccessResponse(loanRequest, enrichedLoanRequest, response);
                }
                else
                {
                    logger.Error(
                        "Credit check service returned {code} {response} for {@request}",
                        response.StatusCode,
                        response.ReasonPhrase,
                        loanRequest);
                }
            }

            return(enrichedLoanRequest);
        }