from django.conf import settings
import httpx
import json
from app.config import SIMBRELLA_BASE_URL, SIMBRELLA_ENDPOINT_RAC_CHECKS
from app.utils.logger import logger

class SimbrellaIntegration:
    BASE_URL = SIMBRELLA_BASE_URL
    ENDPOINT_RAC_CHECKS = SIMBRELLA_ENDPOINT_RAC_CHECKS

    @staticmethod
    def rac_check(customer_id, account_id, transaction_id):
        """
        Calls the RACCheck endpoit
        """
        url = f"{SimbrellaIntegration.BASE_URL}/{SimbrellaIntegration.ENDPOINT_RAC_CHECKS}"
        logger.info(f"Contacting Rack Checks EndPoint: {str(url)}", exc_info=True)

        payload = {
            "customerId": customer_id,
            "accountId": account_id,
            "transactionId": str(transaction_id),
            "fbnTransactionId": str(transaction_id),
            "countryCode": "NG",
            "channel": "USSD"
        }

        headers = {
            "Content-Type": "application/json",
            "x-api-key": f"{settings.VALID_API_KEY}",
            "App-Id": f"{settings.VALID_APP_ID}",
        }

        try:
            response = httpx.post(url, json=payload, headers=headers, timeout=10.0)

            logger.info(f"This is Response: {str(response)}", exc_info=True)

            return response
           
        except Exception as e:
            logger.error(f"RACCheck API call failed: {str(e)}", exc_info=True)
            raise Exception(f"RACCheck API call failed: {str(e)}")
  
