diff --git a/app/integrations/simbrella.py b/app/integrations/simbrella.py index cadf101..c026563 100644 --- a/app/integrations/simbrella.py +++ b/app/integrations/simbrella.py @@ -8,7 +8,8 @@ from app.utils.logger import logger from flask import jsonify, current_app from app.services.transactions import TransactionService from app.services.repayment import RepaymentService -from app.extensions import db +from app.extensions import db +from app.services.repayments_data import RepaymentsData class SimbrellaClient: @@ -231,6 +232,12 @@ class SimbrellaClient: logger.info(f"CollectLoan response: {response.json()}") RepaymentService.set_repay_result(repayment_data['Id'], response.json().get('responseCode', ''), response.json().get('responseMessage', '')) + result = response.json() + new_repayment_data = RepaymentsData.add_repayment_data(result) + logger.info(f"Repayment data added successfully: {new_repayment_data.to_dict()}") + if not new_repayment_data: + logger.info(f"Failed to add repayment data") + return ResponseHelper.success(response.json(), "Successful") except Exception as e: logger.info(f"Failed to call CollectLoan endpoint: {e}") diff --git a/app/models/__init__.py b/app/models/__init__.py index 705f676..44f2561 100644 --- a/app/models/__init__.py +++ b/app/models/__init__.py @@ -4,5 +4,6 @@ from .loan import Loan from .loan_charge import LoanCharge from .customer import Customer from .account import Account +from .repayments_data import RepaymentsData -__all__ = ['Transaction', 'Repayment', 'Loan', 'LoanCharge', 'Customer', 'Account'] \ No newline at end of file +__all__ = ['Transaction', 'Repayment', 'Loan', 'LoanCharge', 'Customer', 'Account', 'RepaymentsData'] \ No newline at end of file diff --git a/app/models/repayments_data.py b/app/models/repayments_data.py new file mode 100644 index 0000000..922580a --- /dev/null +++ b/app/models/repayments_data.py @@ -0,0 +1,44 @@ +from datetime import datetime, timezone +from app.extensions import db +from app.utils.logger import logger + +class RepaymentsData(db.Model): + __tablename__ = 'repayments_data' + + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + transaction_id = db.Column(db.String(50), nullable=False) + added_date = db.Column(db.DateTime(timezone=True), default=datetime.now(timezone.utc), nullable=False) + response_code = db.Column(db.String(10), nullable=True) + response_descr = db.Column(db.String(255), nullable=True) + + def to_dict(self): + return { + "id": self.id, + "transaction_id": self.transaction_id, + "added_date": self.added_date.isoformat() if self.added_date else None, + "response_code": self.response_code, + "response_descr": self.response_descr, + } + + + def __repr__(self): + return f"" + + @classmethod + def add_repayment_data(cls, data): + """ + Add a new repayment data entry. + """ + try: + new_data = cls( + transaction_id=data.get('transactionId'), + response_code=data.get('responseCode'), + response_descr=data.get('responseMessage') + ) + db.session.add(new_data) + db.session.commit() + logger.info(f"data has been commited ") + return new_data + except Exception as e: + db.session.rollback() + raise Exception(f"Error adding repayment data: {str(e)}") \ No newline at end of file diff --git a/app/services/repayments_data.py b/app/services/repayments_data.py new file mode 100644 index 0000000..424b279 --- /dev/null +++ b/app/services/repayments_data.py @@ -0,0 +1,11 @@ +from app.models import RepaymentsData + +class RepaymentService: + + + @classmethod + def add_repayment_data(cls,data): + """ + Add a new repayment data entry. + """ + return RepaymentsData.add_repayment_data(data) \ No newline at end of file