from flask import Flask, request, jsonify
import sys
import os

# Esto asegura que Python encuentre tus scripts en la misma carpeta
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

app = Flask(__name__)

# --- RUTA DE PRUEBA ---
# URL: https://agent.educa20.com/
@app.route('/')
def index():
    return "¡El Backend del Agente Educa20 está corriendo perfectamente en el Hosting!"


# --- RUTA PARA EL WEBHOOK DE WHATSAPP (META API) ---
# URL: https://agent.educa20.com/whatsapp
@app.route('/whatsapp', methods=['GET', 'POST'])
def whatsapp_webhook():
    
    # 1. VERIFICACIÓN (Solo ocurre cuando conectas la App en Meta for Developers por primera vez)
    if request.method == 'GET':
        mode = request.args.get('hub.mode')
        token = request.args.get('hub.verify_token')
        challenge = request.args.get('hub.challenge')
        
        # Debes configurar el mismo token en Facebook Developers
        mi_token_secreto = 'mi_clave_secreta_educa20'
        
        if mode == 'subscribe' and token == mi_token_secreto:
            print("Webhook de WhatsApp verificado exitosamente.")
            return challenge, 200
        else:
            return 'Fallo en la verificación', 403

    # 2. RECEPCIÓN DE MENSAJES (Cuando alguien te escribe por WhatsApp)
    if request.method == 'POST':
        data = request.get_json()
        
        try:
            # Extraer el mensaje del JSON de WhatsApp
            mensaje_texto = data['entry'][0]['changes'][0]['value']['messages'][0]['text']['body']
            numero_remitente = data['entry'][0]['changes'][0]['value']['messages'][0]['from']
            
            print(f"Mensaje recibido de {numero_remitente}: {mensaje_texto}")
            
            # Aquí irá la lógica de tus scripts. Ejemplo:
            if "restaurar" in mensaje_texto.lower():
                # import restore_backups
                # restore_backups.main()
                print("Ejecutando script de restauración...")
                
            elif "comparar" in mensaje_texto.lower():
                # import compare_databases
                # compare_databases.main()
                print("Ejecutando script de comparación...")

        except Exception as e:
            # Si el JSON no tiene el formato esperado (ej. mensajes de estado) no hacemos nada
            pass
            
        # Siempre hay que devolver 200 OK para que WhatsApp sepa que lo recibimos
        return "EVENT_RECEIVED", 200


if __name__ == '__main__':
    # Esto es solo para pruebas locales (en tu PC). 
    # cPanel no usará esto, usará passenger_wsgi.py
    app.run(host='0.0.0.0', port=5000, debug=True)
