1 Commits

Author SHA1 Message Date
Chinenye Nmoh ca3ca1cac3 added eco integration 2025-07-25 11:53:05 +01:00
6 changed files with 33 additions and 30 deletions
+10 -10
View File
@@ -3,14 +3,14 @@ KAFKA_TIMEOUT=1000.0
KAFKA_BROKER="10.20.30.50:9092" KAFKA_BROKER="10.20.30.50:9092"
KAFKA_TOPICS=PROCESS_PAYMENT,LOAN_REPAYMENT KAFKA_TOPICS=PROCESS_PAYMENT,LOAN_REPAYMENT
# DATABASE_USER=firstadvance DATABASE_USER=firstadvance
# DATABASE_PASSWORD=FirstAdvance! DATABASE_PASSWORD=FirstAdvance!
# DATABASE_HOST=10.20.30.60 DATABASE_HOST=10.20.30.60
# DATABASE_PORT=5432 DATABASE_PORT=5432
# DATABASE_NAME=firstadvancedev DATABASE_NAME=firstadvancedev
DATABASE_USER=system # DATABASE_USER=system
DATABASE_PASSWORD=FIRSTADV_PASS #DATABASE_PASSWORD=FIRSTADV_PASS
DATABASE_HOST=10.10.33.65 #DATABASE_HOST=10.10.33.65
DATABASE_PORT=1521 #DATABASE_PORT=1521
DATABASE_SID=FREE #DATABASE_SID=FREE
+10 -10
View File
@@ -3,14 +3,14 @@ KAFKA_TIMEOUT=1000.0
KAFKA_BROKER="dev-events.simbrellang.net:9085" KAFKA_BROKER="dev-events.simbrellang.net:9085"
KAFKA_TOPICS=PROCESS_PAYMENT,LOAN_REPAYMENT KAFKA_TOPICS=PROCESS_PAYMENT,LOAN_REPAYMENT
# DATABASE_USER=firstadvance DATABASE_USER=firstadvance
# DATABASE_PASSWORD=FirstAdvance! DATABASE_PASSWORD=FirstAdvance!
# DATABASE_HOST=dev-data.simbrellang.net DATABASE_HOST=10.20.30.60
# DATABASE_PORT=10532 DATABASE_PORT=5432
# DATABASE_NAME=firstadvancedev DATABASE_NAME=firstadvancedev
DATABASE_USER=system # DATABASE_USER=system
DATABASE_PASSWORD=FIRSTADV_PASS #DATABASE_PASSWORD=FIRSTADV_PASS
DATABASE_HOST=10.10.33.65 #DATABASE_HOST=10.10.33.65
DATABASE_PORT=1521 #DATABASE_PORT=1521
DATABASE_SID=FREE #DATABASE_SID=FREE
+4 -4
View File
@@ -33,12 +33,12 @@ class Config:
DATABASE_NAME = os.getenv("DATABASE_NAME") DATABASE_NAME = os.getenv("DATABASE_NAME")
DATABASE_PORT = os.getenv("DATABASE_PORT", 10532) DATABASE_PORT = os.getenv("DATABASE_PORT", 10532)
DATABASE_SID = os.environ.get("DATABASE_SID", "FREE") DATABASE_SID = os.environ.get("DATABASE_SID", "FREE")
DNS = f"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={DATABASE_HOST})(PORT={DATABASE_PORT}))(CONNECT_DATA=(SID={DATABASE_SID})))" #DNS = f"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={DATABASE_HOST})(PORT={DATABASE_PORT}))(CONNECT_DATA=(SID={DATABASE_SID})))"
SQLALCHEMY_DATABASE_URI = (f"oracle+oracledb://{DATABASE_USER}:{DATABASE_PASSWORD}@{DNS}") #SQLALCHEMY_DATABASE_URI = (f"oracle+oracledb://{DATABASE_USER}:{DATABASE_PASSWORD}@{DNS}")
# SQLALCHEMY_DATABASE_URI = f"postgresql+psycopg2://{DATABASE_USER}:{DATABASE_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}" SQLALCHEMY_DATABASE_URI = f"postgresql+psycopg2://{DATABASE_USER}:{DATABASE_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}"
SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_TRACK_MODIFICATIONS = False
# SQLALCHEMY_ECHO = True # SQLALCHEMY_ECHO = True
@@ -50,7 +50,7 @@ class Config:
MAIL_USE_TLS = os.getenv('MAIL_USE_TLS', 'True').lower() in ('true', '1', 'yes') MAIL_USE_TLS = os.getenv('MAIL_USE_TLS', 'True').lower() in ('true', '1', 'yes')
MAIL_USE_SSL = os.getenv('MAIL_USE_SSL', 'False').lower() in ('true', '1', 'yes') MAIL_USE_SSL = os.getenv('MAIL_USE_SSL', 'False').lower() in ('true', '1', 'yes')
MAIL_DEFAULT_SENDER = ('FirstAdvance', 'firstadvance@dynamikservices.tech') MAIL_DEFAULT_SENDER = ('FirstAdvance', 'firstadvance@dynamikservices.tech')
MAIL_RECEIVER= os.getenv('MAIL_RECEIVER', 'chinenyeumeaku@gmail.com,umeakuchinenye@gmail.com') MAIL_RECEIVER= os.getenv('MAIL_RECEIVER', 'chinenyeumeaku@gmail.com')
BANK_CALL_BASE_URL = os.getenv("BANK_CALL_BASE_URL", "https://bank-emulator.dev.simbrellang.net/api") BANK_CALL_BASE_URL = os.getenv("BANK_CALL_BASE_URL", "https://bank-emulator.dev.simbrellang.net/api")
BANK_CALL_SMS_BASE_URL= os.getenv("BANK_CALL_SMS_BASE_URL","https://first-advance-middleware-develop.fbn-devops-dev-asenv.appserviceenvironment.net/SMS") BANK_CALL_SMS_BASE_URL= os.getenv("BANK_CALL_SMS_BASE_URL","https://first-advance-middleware-develop.fbn-devops-dev-asenv.appserviceenvironment.net/SMS")
+5 -4
View File
@@ -78,9 +78,10 @@ class SimbrellaClient:
insurance_fee = loan_charges.get("INSURANCE")['amount'] insurance_fee = loan_charges.get("INSURANCE")['amount']
debtId = str(loan_data.get('debtId', "")).strip().zfill(6) debtId = str(loan_data.get('debtId', "")).strip().zfill(6)
t_id = ''.join(random.choices(string.ascii_uppercase, k=22))
disbursement_data = { disbursement_data = {
"transactionId": loan_data.get('transactionId'), "transactionId": t_id,
"FbnTransactionId": loan_data.get('transactionId'), "FbnTransactionId": loan_data.get('transactionId'),
"debtId": debtId, "debtId": debtId,
"customerId": loan_data.get('customerId'), "customerId": loan_data.get('customerId'),
@@ -97,7 +98,7 @@ class SimbrellaClient:
try: try:
logger.info(f"Here is your Disbursement Request data ****** : {disbursement_data}") logger.info(f"Here is your Disbursement Request data ****** : {disbursement_data}")
response = requests.post(api_url, json=disbursement_data, timeout=10, headers=get_headers()) response = requests.post(api_url, json=disbursement_data, timeout=90, headers=get_headers())
if response.status_code == 404: if response.status_code == 404:
logger.error("Received 404 from external service") logger.error("Received 404 from external service")
return ResponseHelper.error("Disbursement Service url not found (404)", status_code=404) return ResponseHelper.error("Disbursement Service url not found (404)", status_code=404)
@@ -178,7 +179,7 @@ class SimbrellaClient:
"unicode": True "unicode": True
} }
try: try:
sms_response = requests.post(sms_url, json=sms_data, timeout=10, headers=get_headers()) sms_response = requests.post(sms_url, json=sms_data, timeout=90, headers=get_headers())
sms_response.raise_for_status() # Raise an exception for 4xx or 5xx status codes sms_response.raise_for_status() # Raise an exception for 4xx or 5xx status codes
result = sms_response.json() result = sms_response.json()
@@ -194,7 +195,7 @@ class SimbrellaClient:
return 0 return 0
except Exception as e: except Exception as e:
logger.info(f"Failed to call TransactionVerify endpoint: {e}") logger.info(f"Failed to call TransactionVerify endpoint: {e}")
return 0 return ResponseHelper.error("Unexpected error while processing loan disbursement", status_code=500, error=str(e))
@staticmethod @staticmethod
def collect_loan_user_initiated(data): def collect_loan_user_initiated(data):
+2
View File
@@ -3,6 +3,7 @@ from flask import current_app
from app.extensions import mail from app.extensions import mail
import pandas as pd import pandas as pd
from io import BytesIO from io import BytesIO
from app.utils.logger import logger
def get_report_data(): def get_report_data():
""" """
@@ -36,5 +37,6 @@ def send_report_email(report_data: list, recipients: list):
with current_app.app_context(): with current_app.app_context():
mail.send(msg) mail.send(msg)
return "Report email sent" return "Report email sent"
+2 -2
View File
@@ -1,7 +1,7 @@
openapi: 3.0.3 openapi: 3.0.3
info: info:
title: Event Manager API title: Eco Integration Event Manager API
description: The documentation for Event Manager API description: The documentation for Eco Event Manager API
version: 1.0.0 version: 1.0.0
contact: contact:
name: API Support name: API Support