From 2872f6c75cdd41e5e0886b69333874b4a10a1b04 Mon Sep 17 00:00:00 2001 From: Chinenye Nmoh Date: Tue, 3 Jun 2025 11:16:26 +0100 Subject: [PATCH 1/2] returned disbured_date --- app/integrations/simbrella.py | 4 +++- app/models/loan.py | 3 ++- app/routes/authentication.py | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/integrations/simbrella.py b/app/integrations/simbrella.py index b0ff9eb..4a339f7 100644 --- a/app/integrations/simbrella.py +++ b/app/integrations/simbrella.py @@ -51,8 +51,10 @@ class SimbrellaClient: return 0 logger.info(f"Here are your cal 111 : *********************************************************") # let us set disbursement date - LoanService.set_disbursement_date(loan_data['debtId'], loan_data['customerId']) # toda this must return something + disburse_date = 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]) logger.info(f"Here are your loan_charges: {loan_charges}") diff --git a/app/models/loan.py b/app/models/loan.py index a358089..ffc7055 100644 --- a/app/models/loan.py +++ b/app/models/loan.py @@ -72,7 +72,7 @@ class Loan(db.Model): 'status': self.status, 'productId': self.product_id, 'dueDate': self.due_date.isoformat() if self.due_date else None, - 'loanDate': self.created_at.isoformat if self.created_at else None, + 'loanDate': self.created_at.isoformat() if self.created_at else None, 'disburseDate': self.disburse_date.isoformat() if self.disburse_date else None, 'disburseVerify': self.disburse_verify.isoformat if self.disburse_verify else None, 'reference': self.reference @@ -100,4 +100,5 @@ class Loan(db.Model): 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 diff --git a/app/routes/authentication.py b/app/routes/authentication.py index cce54b5..2411aff 100644 --- a/app/routes/authentication.py +++ b/app/routes/authentication.py @@ -2,6 +2,7 @@ from flask import Blueprint, request, jsonify, current_app import requests from app.utils.auth import get_headers from app.config import settings +from app.utils.logger import logger auth_bp = Blueprint("auth", __name__) @@ -10,6 +11,7 @@ BASE_URL = settings.BANK_CALL_BASE_URL @auth_bp.route("/health", methods=["GET"]) def health(): + logger.info("Health check endpoint called") return jsonify({"status": "Up"}) From 15e012c0715af259fdcc45e1151d01a1044b3699 Mon Sep 17 00:00:00 2001 From: Chinenye Nmoh Date: Tue, 3 Jun 2025 17:14:02 +0100 Subject: [PATCH 2/2] 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