3MPC check
This commit is contained in:
@@ -51,6 +51,14 @@ class EligibilityCheckService(BaseService):
|
|||||||
|
|
||||||
db.session.flush()
|
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
|
# Determine Loan count
|
||||||
is_eligible = EligibilityCheckService.check_loan_limits(customer_id)
|
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)
|
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||||
db.session.rollback()
|
db.session.rollback()
|
||||||
return ResponseHelper.internal_server_error()
|
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
|
@staticmethod
|
||||||
def check_loan_limits(customer_id):
|
def check_loan_limits(customer_id):
|
||||||
|
|||||||
@@ -204,6 +204,21 @@ class Loan(db.Model):
|
|||||||
|
|
||||||
return active_loans
|
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
|
@classmethod
|
||||||
def update_status(cls, loan_id, status):
|
def update_status(cls, loan_id, status):
|
||||||
|
|||||||
Reference in New Issue
Block a user