public HttpResponseMessage CheckIfEligibleToCollectLoan(LoanDetailsDto loanDetailsDto) { var customerLinkedAccount = _context.CustomerAccounts.Single(c => c.Id == loanDetailsDto.LinkedCustomerAccountId); if (customerLinkedAccount.LoanDetailsId != null) { var linkedLoanDetail = _context.LoanDetails.SingleOrDefault(c => c.Id == customerLinkedAccount.LoanDetailsId); if (linkedLoanDetail != null && linkedLoanDetail.LoanAmount != 0) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Customer yet to pay off previous loan")); } } return(Request.CreateResponse(HttpStatusCode.OK, "Ok")); }
public HttpResponseMessage LoanDisbursement(LoanDetailsDto loanDetailsDto) { var loanAccountTypeConfig = _context.AccountTypes.Single(c => c.Name.Equals("Loan Account")); var interestRate = loanAccountTypeConfig.DebitInterestRate; var capitalAccount = _context.GlAccounts.SingleOrDefault(c => c.Name.Equals("Capital Account")); capitalAccount.AccountBalance = capitalAccount.AccountBalance - loanDetailsDto.LoanAmount; // DEBIT loanDetailsDto.CustomerLoan = loanDetailsDto.LoanAmount; // CREDIT // : Add financial entry AddToReport("Loan Disbursement", capitalAccount.Name, loanDetailsDto.CustomerLoanAccountName, loanDetailsDto.LoanAmount); loanDetailsDto.InterestRate = interestRate; var loanDetails = new LoanDetails(); loanDetails = Mapper.Map <LoanDetailsDto, LoanDetails>(loanDetailsDto); _context.LoanDetails.Add(loanDetails); _context.SaveChanges(); var customerAccount = _context.CustomerAccounts.ToList(); var linkedCustomerAccount = customerAccount.SingleOrDefault(c => c.Id == loanDetailsDto.LinkedCustomerAccountId); //var glLoanAccount = _context.GlAccounts.SingleOrDefault(c => c.Name.Equals(CBA.CUSTOMER_LOAN_ACCOUNT)); if (linkedCustomerAccount != null) { linkedCustomerAccount.LoanDetailsId = loanDetails.Id; linkedCustomerAccount.AccountBalance = linkedCustomerAccount.AccountBalance + loanDetails.LoanAmount; // CREDIT } // : Financial Report Entry AddToReport("Loan Disbursement", loanDetailsDto.CustomerLoanAccountName, linkedCustomerAccount.Name, loanDetails.LoanAmount); _context.SaveChanges(); List <string> message = new List <string> { "Loan Disbursed Successfully", loanDetails.Id.ToString() }; return(Request.CreateResponse(HttpStatusCode.OK, message)); }