Esempio n. 1
0
        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());
            }
        }