Beispiel #1
0
        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;
        }
Beispiel #6
0
        //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;
        }