diff --git a/.env.local.example b/.env.local.example index aee093d..70d108f 100644 --- a/.env.local.example +++ b/.env.local.example @@ -3,14 +3,14 @@ KAFKA_TIMEOUT=1000.0 KAFKA_BROKER="10.20.30.50:9092" KAFKA_TOPICS=PROCESS_PAYMENT,LOAN_REPAYMENT -# DATABASE_USER=firstadvance -# DATABASE_PASSWORD=FirstAdvance! -# DATABASE_HOST=10.20.30.60 -# DATABASE_PORT=5432 -# DATABASE_NAME=firstadvancedev +DATABASE_USER=firstadvance +DATABASE_PASSWORD=FirstAdvance! +DATABASE_HOST=10.20.30.60 +DATABASE_PORT=5432 +DATABASE_NAME=firstadvancedev -DATABASE_USER=system -DATABASE_PASSWORD=FIRSTADV_PASS -DATABASE_HOST=10.10.33.65 -DATABASE_PORT=1521 -DATABASE_SID=FREE \ No newline at end of file +# DATABASE_USER=system +#DATABASE_PASSWORD=FIRSTADV_PASS +#DATABASE_HOST=10.10.33.65 +#DATABASE_PORT=1521 +#DATABASE_SID=FREE \ No newline at end of file diff --git a/.env.remote.example b/.env.remote.example index 642890d..88c46f9 100644 --- a/.env.remote.example +++ b/.env.remote.example @@ -3,14 +3,14 @@ KAFKA_TIMEOUT=1000.0 KAFKA_BROKER="dev-events.simbrellang.net:9085" KAFKA_TOPICS=PROCESS_PAYMENT,LOAN_REPAYMENT -# DATABASE_USER=firstadvance -# DATABASE_PASSWORD=FirstAdvance! -# DATABASE_HOST=dev-data.simbrellang.net -# DATABASE_PORT=10532 -# DATABASE_NAME=firstadvancedev +DATABASE_USER=firstadvance +DATABASE_PASSWORD=FirstAdvance! +DATABASE_HOST=10.20.30.60 +DATABASE_PORT=5432 +DATABASE_NAME=firstadvancedev -DATABASE_USER=system -DATABASE_PASSWORD=FIRSTADV_PASS -DATABASE_HOST=10.10.33.65 -DATABASE_PORT=1521 -DATABASE_SID=FREE \ No newline at end of file +# DATABASE_USER=system +#DATABASE_PASSWORD=FIRSTADV_PASS +#DATABASE_HOST=10.10.33.65 +#DATABASE_PORT=1521 +#DATABASE_SID=FREE \ No newline at end of file diff --git a/app/config.py b/app/config.py index abfd996..3173f35 100644 --- a/app/config.py +++ b/app/config.py @@ -33,12 +33,12 @@ class Config: DATABASE_NAME = os.getenv("DATABASE_NAME") DATABASE_PORT = os.getenv("DATABASE_PORT", 10532) 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_ECHO = True @@ -50,7 +50,7 @@ class Config: 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_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_SMS_BASE_URL= os.getenv("BANK_CALL_SMS_BASE_URL","https://first-advance-middleware-develop.fbn-devops-dev-asenv.appserviceenvironment.net/SMS") diff --git a/app/integrations/simbrella.py b/app/integrations/simbrella.py index dfbc2e1..fdd7170 100644 --- a/app/integrations/simbrella.py +++ b/app/integrations/simbrella.py @@ -78,9 +78,10 @@ class SimbrellaClient: insurance_fee = loan_charges.get("INSURANCE")['amount'] debtId = str(loan_data.get('debtId', "")).strip().zfill(6) + t_id = ''.join(random.choices(string.ascii_uppercase, k=22)) disbursement_data = { - "transactionId": loan_data.get('transactionId'), + "transactionId": t_id, "FbnTransactionId": loan_data.get('transactionId'), "debtId": debtId, "customerId": loan_data.get('customerId'), @@ -97,7 +98,7 @@ class SimbrellaClient: try: 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: logger.error("Received 404 from external service") return ResponseHelper.error("Disbursement Service url not found (404)", status_code=404) @@ -178,7 +179,7 @@ class SimbrellaClient: "unicode": True } 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 result = sms_response.json() @@ -194,7 +195,7 @@ class SimbrellaClient: return 0 except Exception as 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 def collect_loan_user_initiated(data): diff --git a/app/utils/mail.py b/app/utils/mail.py index 3e39255..7ac10b2 100644 --- a/app/utils/mail.py +++ b/app/utils/mail.py @@ -3,6 +3,7 @@ from flask import current_app from app.extensions import mail import pandas as pd from io import BytesIO +from app.utils.logger import logger def get_report_data(): """ @@ -36,5 +37,6 @@ def send_report_email(report_data: list, recipients: list): with current_app.app_context(): mail.send(msg) + return "Report email sent" \ No newline at end of file diff --git a/openapi.yml b/openapi.yml index 9b03e59..64e5c19 100644 --- a/openapi.yml +++ b/openapi.yml @@ -1,7 +1,7 @@ openapi: 3.0.3 info: - title: Event Manager API - description: The documentation for Event Manager API + title: Eco Integration Event Manager API + description: The documentation for Eco Event Manager API version: 1.0.0 contact: name: API Support