import urllib.request
import json
import os

BACKOFFICE_URL = os.getenv('BACKOFFICE_URL', 'http://django_app_backoffice:8000')
COMUNICACIONES_URL = os.getenv('COMUNICACIONES_URL', 'http://django_app_comunicaciones:8000')
DOCUMENTACION_URL = os.getenv('DOCUMENTACION_URL', 'http://django_app_documentacion:8000')


def _post(url, payload):
    data = json.dumps(payload).encode('utf-8')
    req = urllib.request.Request(
        url, data=data,
        headers={'Content-Type': 'application/json'},
        method='POST'
    )
    with urllib.request.urlopen(req, timeout=10) as resp:
        return json.loads(resp.read())


# --- Backoffice ---
def backoffice_obtener_usuario(params):
    return _post(f'{BACKOFFICE_URL}/api/usuarios/obtener/', params)

def backoffice_crear_usuario(params):
    return _post(f'{BACKOFFICE_URL}/api/usuarios/guardar/', params)

def backoffice_obtener_cliente(params):
    return _post(f'{BACKOFFICE_URL}/api/clientes/obtener/', params)

def backoffice_crear_cliente(params):
    return _post(f'{BACKOFFICE_URL}/api/clientes/guardar/', params)

def backoffice_obtener_contrato(params):
    return _post(f'{BACKOFFICE_URL}/api/contratos/obtener/', params)

def backoffice_crear_contrato(params):
    return _post(f'{BACKOFFICE_URL}/api/contratos/guardar/', params)


# --- Comunicaciones ---
def comunicaciones_enviar_email(params):
    return _post(f'{COMUNICACIONES_URL}/api/email/enviar/', params)

def comunicaciones_enviar_sms(params):
    return _post(f'{COMUNICACIONES_URL}/api/sms/enviar/', params)

def comunicaciones_registrar_webhook(params):
    return _post(f'{COMUNICACIONES_URL}/api/webhooks/registrar/', params)


# --- Documentacion ---
def documentacion_generar_pdf(params):
    return _post(f'{DOCUMENTACION_URL}/api/generation/pdf/', params)

def documentacion_obtener_template(params):
    return _post(f'{DOCUMENTACION_URL}/api/templates/obtener/', params)

def documentacion_guardar_documento(params):
    return _post(f'{DOCUMENTACION_URL}/api/storage/guardar/', params)
