public Status.Loan PayoffLoan(PayoffLoanDto payoffLoan) { var loan = _loanRepository.FindLoanById(payoffLoan.LoanId); if (loan == null) { return(Status.Loan.Nonexistent); } else if (loan.Status == Status.Loan.Repaid) { return(Status.Loan.AlreadyRepaid); } loan.Amount -= payoffLoan.Amount; loan.Status = loan.Amount == 0 ? Status.Loan.Repaid : loan.Amount > 0 ? Status.Loan.PartlyPaid : Status.Loan.OverPaid; if (loan.Status == Status.Loan.OverPaid) { return(Status.Loan.OverPaid); } if (_loanRepository.PayoffLoan(loan)) { _userService.ChangeUserBalance(loan.BorrowerId, payoffLoan.Amount); _userService.ChangeUserBalance(loan.LenderId, payoffLoan.Amount * -1); } return(loan.Status); }
public IActionResult PayoffLoan(PayoffLoanDto payoffLoan) { var loanStatus = _loanService.PayoffLoan(payoffLoan); if (loanStatus == Loan.Nonexistent || loanStatus == Loan.OverPaid || loanStatus == Loan.AlreadyRepaid) { return(BadRequest(new { status = loanStatus })); } else { return(NoContent()); } }