From 15e012c0715af259fdcc45e1151d01a1044b3699 Mon Sep 17 00:00:00 2001 From: Chinenye Nmoh Date: Tue, 3 Jun 2025 17:14:02 +0100 Subject: [PATCH] commited loan date --- app/integrations/simbrella.py | 20 ++++++++++---------- app/models/loan.py | 30 ++++++++++++++++++++---------- app/routes/autocall.py | 20 +++++++++++++++++--- 3 files changed, 47 insertions(+), 23 deletions(-) diff --git a/app/integrations/simbrella.py b/app/integrations/simbrella.py index 4a339f7..763aec5 100644 --- a/app/integrations/simbrella.py +++ b/app/integrations/simbrella.py @@ -51,9 +51,8 @@ class SimbrellaClient: return 0 logger.info(f"Here are your cal 111 : *********************************************************") # let us set disbursement date - disburse_date = LoanService.set_disbursement_date(loan_data['debtId'], loan_data['customerId']) # toda this must return something + LoanService.set_disbursement_date(loan_data['debtId'], loan_data['customerId']) # toda this must return something logger.info(f"Here are your cal 000 : *********************************************************") - loan_data['disburseDate'] = disburse_date logger.info(f"Here is your loan data after setting disbursement date: {loan_data}") loan_charges = preprocess_loan_charges_data([loan_charge.to_dict() for loan_charge in loan.loan_charges]) @@ -64,14 +63,15 @@ class SimbrellaClient: interest_fee = loan_charges.get("INTEREST")['amount'] insurance_fee = loan_charges.get("INSURANCE")['amount'] - disbursement_data ={ - "requestId": data['requestId'], - "transactionId": data['transactionId'], - "debtId": loan_data['debtId'], - "customerId": data['customerId'], - "accountId": data['accountId'], - "productId": loan_data['productId'], - "provideAmount": loan_data['currentLoanAmount'], + disbursement_data = { + "requestId": data.get('requestId'), + "transactionId": data.get('transactionId'), + "FbnTransactionId": data.get('FbnTransactionId'), + "debtId": str(loan_data.get('debtId', "")), + "customerId": data.get('customerId'), + "accountId": data.get('accountId'), + "productId": str(loan_data.get('productId', "")), + "provideAmount": loan_data.get('currentLoanAmount'), "collectAmountInterest": interest_fee, "collectAmountMgtFee": mgt_fee, "collectAmountInsurance": insurance_fee, diff --git a/app/models/loan.py b/app/models/loan.py index ffc7055..4c69253 100644 --- a/app/models/loan.py +++ b/app/models/loan.py @@ -7,6 +7,7 @@ import logging from sqlalchemy import and_, or_, not_ from sqlalchemy.sql import func from app.utils.logger import logger +from app.extensions import db class Loan(db.Model): __tablename__ = "loans" @@ -82,23 +83,32 @@ class Loan(db.Model): def get_loan_by_transaction_id(cls, transaction_id): return cls.query.filter_by(transaction_id=transaction_id).first() - @classmethod - def get_loan_by_debt_id(cls, debt_id): - return cls.query.filter_by(id=debt_id).first() - @classmethod def set_disbursement_date(cls, loan_id, customer_id): """ - Update the status of the loan with the given loan_id. + Update the disburse date of the loan with the given loan_id. """ # Retrieve loan loan = cls.query.get(loan_id) if not loan: raise ValueError(f"Loan with ID {loan_id} does not exist.") - current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') - logger.info(f"What is now ======= ==== ==> : {current_time}") - # Update loan disburse_date and timestamp datetime.today().strftime('%Y-%m-%d %H:%M:%S') - loan.disburse_date = current_time # datetime.today().strftime('%Y-%m-%d %H:%M:%S') - return current_time + + # Check if customer_id matches + if loan.customer_id != customer_id: + raise ValueError(f"Customer ID {customer_id} does not match the loan's customer ID.") + + current_time = datetime.now() + logger.info(f"What is now ======= ==== ==> : {current_time}") + # Update loan disburse_date + loan.disburse_date = current_time + + # Commit changes to database + try: + logger.info(f"Updating disburse date for loan ID {loan_id} to {current_time}") + db.session.commit() + except Exception as e: + db.session.rollback() + logger.error(f"Failed to update disburse date: {e}") + raise diff --git a/app/routes/autocall.py b/app/routes/autocall.py index 87f8b64..88bc79c 100644 --- a/app/routes/autocall.py +++ b/app/routes/autocall.py @@ -19,9 +19,23 @@ def verify_transaction(): def disbursement(): # data = request.json() logger.info(f"Calling Disbursement Components") - - response = SimbrellaClient.verify_transaction() - + data = { + "requestId": "TRX1747399791142408", + "transactionId": "TRX1747399791142408", + "FbnTransactionId":"TRX1747399791142408", + "debtId": "9451", + "customerId": "CUC1696296013", + "accountId": "ACC8112865094", + "productId": "AMPC", + "provideAmount": 6600.0, + "collectAmountInterest": 198.0, + "collectAmountMgtFee": 66.0, + "collectAmountInsurance": 66.0, + "collectAmountVAT": 4.95, + "countryId": "01", + "comment": "Loan Disbursement" + } + response = SimbrellaClient.disburse_loan(data) return response -- 2.34.1