[update]: Offers
This commit was merged in pull request #34.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from flask import session, jsonify
|
||||
from app.models.loan import Loan
|
||||
from app.models.transaction_offers import TransactionOffer
|
||||
from app.utils.logger import logger
|
||||
from app.api.services.base_service import BaseService
|
||||
@@ -50,6 +51,12 @@ class EligibilityCheckService(BaseService):
|
||||
return ResponseHelper.error(result_description="Invalid Customer or Account")
|
||||
|
||||
db.session.flush()
|
||||
|
||||
# Determine Loan count
|
||||
is_eligible = EligibilityCheckService.check_loan_limits(customer_id)
|
||||
|
||||
if not is_eligible:
|
||||
return ResponseHelper.error(result_description="Max loan count reached")
|
||||
|
||||
# Call RACCheck
|
||||
response = SimbrellaIntegration.rac_check(
|
||||
@@ -58,7 +65,7 @@ class EligibilityCheckService(BaseService):
|
||||
transaction_id = transaction.transaction_id,
|
||||
)
|
||||
|
||||
# this chck for error is not valid
|
||||
# this chek for error is not valid
|
||||
if response.status_code != 200:
|
||||
return ResponseHelper.error(result_description="RACCheck failed")
|
||||
|
||||
@@ -146,4 +153,33 @@ class EligibilityCheckService(BaseService):
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
db.session.rollback()
|
||||
return ResponseHelper.internal_server_error()
|
||||
return ResponseHelper.internal_server_error()
|
||||
|
||||
|
||||
@staticmethod
|
||||
def check_loan_limits(customer_id):
|
||||
"""
|
||||
Checks if a customer has exceeded the loan limits for given offer.
|
||||
"""
|
||||
loan = Loan.get_customer_last_loan(customer_id)
|
||||
|
||||
if not loan:
|
||||
return True
|
||||
|
||||
offer_id = loan.offer_id[:5]
|
||||
|
||||
offer = Offer.get_offer_by_id(offer_id)
|
||||
if not offer:
|
||||
logger.error(f"Offer not found for offer_id: {offer_id} (customer_id: {customer_id})")
|
||||
return False
|
||||
|
||||
daily_count = TransactionOffer.get_daily_loan_count(customer_id, offer_id)
|
||||
|
||||
|
||||
logger.error(f"daily_count: {daily_count}, Max: {offer.max_daily_loans}")
|
||||
|
||||
if offer.max_daily_loans is not None and daily_count >= offer.max_daily_loans:
|
||||
return False
|
||||
|
||||
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user