3MPC check
This commit is contained in:
@@ -51,6 +51,14 @@ class EligibilityCheckService(BaseService):
|
||||
|
||||
db.session.flush()
|
||||
|
||||
# Determine if there is any loan of 0 days active
|
||||
current_loan = EligibilityCheckService.get_current_active_loans_by_account_id(account_id = account_id)
|
||||
if current_loan:
|
||||
logger.info(f"Account {current_loan['accountId']} has active loan {current_loan}")
|
||||
if current_loan['product_id'] =='3MPC':
|
||||
return ResponseHelper.error(result_description="Max loan count for 3MPC reached")
|
||||
|
||||
|
||||
# Determine Loan count
|
||||
is_eligible = EligibilityCheckService.check_loan_limits(customer_id)
|
||||
|
||||
@@ -167,7 +175,12 @@ class EligibilityCheckService(BaseService):
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
db.session.rollback()
|
||||
return ResponseHelper.internal_server_error()
|
||||
|
||||
|
||||
@staticmethod
|
||||
def get_current_active_loans_by_account_id(account_id):
|
||||
current_loan = Loan.get_current_active_loans_by_account_id(account_id)
|
||||
return current_loan
|
||||
|
||||
|
||||
@staticmethod
|
||||
def check_loan_limits(customer_id):
|
||||
|
||||
@@ -204,6 +204,21 @@ class Loan(db.Model):
|
||||
|
||||
return active_loans
|
||||
|
||||
@classmethod
|
||||
def get_current_active_loans_by_account_id(cls, account_id):
|
||||
"""
|
||||
Get the first active loan based on the accountID.
|
||||
"""
|
||||
first_active_loan = cls.query.filter(
|
||||
cls.account_id == account_id,
|
||||
or_(
|
||||
cls.status == LoanStatus.ACTIVE.value,
|
||||
cls.status == LoanStatus.START_REPAY.value,
|
||||
cls.status == LoanStatus.ACTIVE_PARTIAL.value,
|
||||
)
|
||||
).order_by(cls.id.desc()).first()
|
||||
|
||||
return first_active_loan
|
||||
|
||||
@classmethod
|
||||
def update_status(cls, loan_id, status):
|
||||
|
||||
Reference in New Issue
Block a user