[add]: Documentation Update
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
from .simbrella import SimbrellaIntegration
|
||||
from .kafka import KafkaIntegration
|
||||
from .kafka import KafkaIntegration
|
||||
from .events_service import EventServiceIntegration
|
||||
@@ -0,0 +1,49 @@
|
||||
import httpx
|
||||
from app.utils.logger import logger
|
||||
from app.config import settings
|
||||
|
||||
|
||||
class EventServiceIntegration:
|
||||
BASE_URL = settings.SIMBRELLA_BASE_URL
|
||||
ENDPOINT_DIRECT_LOAN = settings.ENDPOINT_DIRECT_LOAN
|
||||
ENDPOINT_DIRECT_REPAYMENT = settings.ENDPOINT_DIRECT_REPAYMENT
|
||||
|
||||
@staticmethod
|
||||
def direct_loan(transaction_id: str):
|
||||
"""
|
||||
Calls the Direct Loan endpoint
|
||||
"""
|
||||
url = f"{EventServiceIntegration.BASE_URL}{EventServiceIntegration.ENDPOINT_DIRECT_LOAN}"
|
||||
payload = {"transactionId": str(transaction_id)}
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
|
||||
try:
|
||||
response = httpx.post(url, json=payload, headers=headers, timeout=10.0)
|
||||
logger.info(f"Loan Response: {response.text}")
|
||||
return response
|
||||
except Exception as e:
|
||||
logger.error(f"Direct Loan API call failed: {str(e)}", exc_info=True)
|
||||
raise
|
||||
|
||||
@staticmethod
|
||||
def direct_repayment(transaction_id: str):
|
||||
"""
|
||||
Calls the Direct Repayment endpoint
|
||||
"""
|
||||
url = f"{EventServiceIntegration.BASE_URL}{EventServiceIntegration.ENDPOINT_DIRECT_REPAYMENT}"
|
||||
payload = {"transactionId": str(transaction_id)}
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
}
|
||||
|
||||
try:
|
||||
response = httpx.post(url, json=payload, headers=headers, timeout=10.0)
|
||||
logger.info(f"Repayment Response: {response.text}")
|
||||
return response
|
||||
except Exception as e:
|
||||
logger.error(f"Direct Repayment API call failed: {str(e)}", exc_info=True)
|
||||
raise
|
||||
@@ -13,6 +13,7 @@ from app.api.enums import LoanStatus
|
||||
from app.extensions import db
|
||||
from datetime import datetime, timezone
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from app.api.integrations import EventServiceIntegration
|
||||
from app.models import LoanRepaymentSchedule
|
||||
from app.api.services.offer_analysis import OfferAnalysis
|
||||
from app.api.helpers.response_helper import ResponseHelper
|
||||
@@ -172,11 +173,15 @@ class ProvideLoanService(BaseService):
|
||||
"accountId": account_id,
|
||||
"msisdn": customer.msisdn
|
||||
}
|
||||
|
||||
|
||||
event_thread = Thread(target=ProvideLoanService.trigger_loan_disbursement, args=(transaction_id,))
|
||||
event_thread.start()
|
||||
|
||||
# KafkaIntegration.send_loan_request(loan_data = response_data, request_id = request_id)
|
||||
# Call Kafka in a background thread
|
||||
thread = Thread(target=ProvideLoanService.async_send_to_kafka, args=(response_data, request_id, "PROCESS_PAYMENT"))
|
||||
thread.start()
|
||||
kafka_thread = Thread(target=ProvideLoanService.async_send_to_kafka, args=(response_data, request_id, "PROCESS_PAYMENT"))
|
||||
kafka_thread.start()
|
||||
|
||||
db.session.commit()
|
||||
return ResponseHelper.success(data=response_data)
|
||||
@@ -195,4 +200,11 @@ class ProvideLoanService(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()
|
||||
|
||||
@classmethod
|
||||
def trigger_loan_disbursement(cls, transaction_id: str):
|
||||
response = EventServiceIntegration.direct_loan(transaction_id=transaction_id)
|
||||
return response
|
||||
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ from app.api.services.base_service import BaseService
|
||||
from app.api.enums import TransactionType
|
||||
from threading import Thread
|
||||
from app.extensions import db
|
||||
from app.api.integrations import EventServiceIntegration
|
||||
|
||||
class RepaymentService(BaseService):
|
||||
TRANSACTION_TYPE = TransactionType.REPAYMENT
|
||||
@@ -79,9 +80,12 @@ class RepaymentService(BaseService):
|
||||
"debtId": loan_id
|
||||
}
|
||||
|
||||
event_thread = Thread(target=RepaymentService.trigger_loan_repayment, args=(transaction_id,))
|
||||
event_thread.start()
|
||||
|
||||
# Call Kafka in a background thread
|
||||
thread = Thread(target=RepaymentService.async_send_to_kafka, args=(response_data, request_id, "LOAN_REPAYMENT"))
|
||||
thread.start()
|
||||
kafka_thread = Thread(target=RepaymentService.async_send_to_kafka, args=(response_data, request_id, "LOAN_REPAYMENT"))
|
||||
kafka_thread.start()
|
||||
|
||||
db.session.commit()
|
||||
return ResponseHelper.success(data=response_data)
|
||||
@@ -101,3 +105,10 @@ class RepaymentService(BaseService):
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
db.session.rollback()
|
||||
return ResponseHelper.internal_server_error()
|
||||
|
||||
|
||||
@classmethod
|
||||
def trigger_loan_repayment(cls, transaction_id: str):
|
||||
response = EventServiceIntegration.direct_repayment(transaction_id=transaction_id)
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user