public async Task<AccountDto> CreateAccount(CustomerDto customer) { //Account Credentials var accountDetails = _accountDetailsService.GetAccount(); var account = new Account() { CustomerId = customer.CustomerId, AccountNumber = accountDetails.AccountNumber, SortCode = accountDetails.SortCode }; var accountStatus = await GetAccountStatus(customer); if (accountStatus != AccountStatus.Denied) { var accountId = _accountsRepository.Add(account); return new AccountDto { AccountId = accountId, AccountNumber = account.AccountNumber, SortCode = account.SortCode, CustomerId = customer.CustomerId }; } return new AccountDto() { Status = AccountStatus.Denied }; }
public async Task<IHttpActionResult> Post(CustomerDetails customerDetails) { var customerDto = new CustomerDto() { FirstName = customerDetails.FirstName, LastName = customerDetails.LastName, DoB = customerDetails.BirthDate, Nationality = customerDetails.Nationality, AnnualGrossSalary = customerDetails.AnnualGrossSalary, AnnualNetSalary = customerDetails.AnnualNetSalary, PersonalId = customerDetails.PersonalId }; var customerID = _customerService.CreateCustomer(customerDto); var details = new { AnnualGrossSalary = customerDetails.AnnualGrossSalary.ToString(), AnnualNetSalary = customerDetails.AnnualNetSalary.ToString() }; var stringContent = new StringContent(JsonConvert.SerializeObject( new { CustomerId = customerID, FinancialDetails = details, NationalInsuranceNumber = customerDetails.NationalInsuranceNumber }), System.Text.Encoding.UTF8, "application/json"); var client = new HttpClient {BaseAddress = new Uri(ConfigurationManager.AppSettings["AccountsAPI"])}; var response = await client.PostAsync("/api/accounts", stringContent); var customerReport = JsonConvert.DeserializeObject<AccountDto>(response.Content.ReadAsStringAsync().Result); return Ok(); }
public async Task<IHttpActionResult> Post(CreateAccountRequest request) { var customer = new CustomerDto() { CustomerId=request.CustomerId , AnnualNetSalary= request.FinancialDetails.AnnualNetSalary, AnnualGrossSalary = request.FinancialDetails.AnnualGrossSalary, NationalInsuranceNumber= request.NationalInsuranceNumber }; _accountService.CreateAccount(customer); return Ok(); }
public int CreateCustomer(CustomerDto customerDto) { var customer = new Customer() { FirstName = customerDto.FirstName, LastName = customerDto.LastName, BirthDate = customerDto.DoB, AnnualGrossSalary = customerDto.AnnualGrossSalary, Id= customerDto.PersonalId, Nationality= customerDto.Nationality }; var customerId = _customerRepository.Add(customer); return customerId; }
public async Task<CustomerDto> GetCreditReport(CustomerDto customer) { var stringContent = new StringContent(JsonConvert.SerializeObject(new { NationalInsuranceNumber = customer.NationalInsuranceNumber }), System.Text.Encoding.UTF8, "application/json"); var client = new HttpClient() { BaseAddress = new Uri("http://localhost:25720/") }; var response = client.PostAsync("api/CreditScore", stringContent).Result; var customerReport = JsonConvert.DeserializeObject<CreditReportDto>(response.Content.ReadAsStringAsync().Result); customer.CreditReport = new CreditReportDto() { Score = customerReport.Score, IsEligible = customerReport.Lenders.Any(x => x.Status == Status.Unsatisfied) ? false : true }; return customer; }
//Service to retrieve credit report private async Task<AccountStatus> GetAccountStatus(CustomerDto customer) { var accountStatus = AccountStatus.Denied; var report = await _creditReportService.GetCreditReport(customer); if (report.CreditReport.IsEligible) { if (customer.AnnualGrossSalary < 20000) accountStatus = AccountStatus.Classic; if (customer.AnnualGrossSalary >= 20000 && customer.AnnualGrossSalary < 40000) accountStatus = AccountStatus.Silver; if (customer.AnnualGrossSalary >= 40000) accountStatus = AccountStatus.Gold; } return accountStatus; }