import sys
import os
from datetime import datetime

# Agrega la ruta absoluta al sys.path
sys.path.append('/var/www/html/config')

from cnxpdo import get_connection


def insertar_primer_contacto(data):
    """
    Inserta los datos del formulario de primer contacto en la tabla personas_contactos
    """
    try:
        conexionBD = get_connection()
        if conexionBD is None:
            return {
                "success": 0,
                "message": "Error de conexión"
            }

        # Extraer datos del formulario
        nombre_embajador = data.get("nombre_embajador")
        nombre_completo_referido = data.get("nombre_completo_referido")
        numero_cedula = data.get("numero_cedula")
        numero_contacto_whatsapp = data.get("numero_contacto_whatsapp")
        participa_grupos = data.get("participa_grupos")
        aporta_recoleccion_firmas = data.get("aporta_recoleccion_firmas")
        participa_capacitacion_virtual = data.get("participa_capacitacion_virtual")
        horario_capacitacion = data.get("horario_capacitacion", "NULL")
        requiere_material_apoyo = data.get("requiere_material_apoyo")
        ciudad_principal = data.get("ciudad_principal", "NULL")
        localidad_barrio = data.get("localidad_barrio", "NULL")
        representa_grupo_ciudadanos = data.get("representa_grupo_ciudadanos")
        observaciones_adicionales = data.get("observaciones_adicionales", "NULL")
        credencial = data.get("credencial")
        nivel_simpatia_satisfaccion = data.get("nivel_simpatia_satisfaccion")
        duracion_llamada_minutos = data.get("duracion_llamada_minutos")
        temporizador_proceso = data.get("temporizador_proceso")
        id_union_contactos_personas = data.get("id_union_contactos_personas")

        # Convertir tiempo del cronómetro de formato MM:SS a TIME
        tiempo_proceso = None
        if temporizador_proceso:
            try:
                if ":" in temporizador_proceso:
                    minutos, segundos = map(int, temporizador_proceso.split(':'))
                    tiempo_proceso = f"{minutos:02d}:{segundos:02d}:00"
                else:
                    tiempo_proceso = "00:00:00"
            except (ValueError, IndexError):
                tiempo_proceso = "00:00:00"
        else:
            tiempo_proceso = "00:00:00"

        cursor = conexionBD.cursor()
        
        # Query de inserción
        query = """
            INSERT INTO personas_contactos (
                nombre_embajador, 
                nombre_completo_referido, 
                numero_cedula, 
                numero_contacto_whatsapp, 
                participa_grupos, 
                aporta_recoleccion_firmas, 
                participa_capacitacion_virtual, 
                horario_capacitacion, 
                requiere_material_apoyo, 
                ciudad_principal, 
                localidad_barrio, 
                representa_grupo_ciudadanos, 
                observaciones_adicionales, 
                credencial, 
                nivel_simpatia_satisfaccion, 
                duracion_llamada_minutos, 
                id_union_contactos_personas,
                temporizador_proceso
            ) VALUES (
                %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s
            )
        """
        
        cursor.execute(query, (
            nombre_embajador,
            nombre_completo_referido,
            numero_cedula,
            numero_contacto_whatsapp,
            participa_grupos,
            aporta_recoleccion_firmas,
            participa_capacitacion_virtual,
            horario_capacitacion,
            requiere_material_apoyo,
            ciudad_principal,
            localidad_barrio,
            representa_grupo_ciudadanos,
            observaciones_adicionales,
            credencial,
            nivel_simpatia_satisfaccion,
            duracion_llamada_minutos,
            id_union_contactos_personas,
            tiempo_proceso
        ))
        
        # Obtener el ID del registro insertado
        contacto_id = cursor.lastrowid
        
        conexionBD.commit()
        cursor.close()
        conexionBD.close()

        return {
            "success": 1,
            "message": "Contacto insertado correctamente",
            "data": {
                "id": contacto_id,
                "nombre_referido": nombre_completo_referido,
                "fecha_insercion": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            }
        }

    except Exception as e:
        return {
            "success": 0,
            "message": f"Error al insertar contacto: {str(e)}"
        }
    finally:
        if 'cursor' in locals():
            cursor.close()
        if 'conexionBD' in locals() and conexionBD:
            conexionBD.close()
            
            
def getTareasPrimerContacto():
    
    try:
        conexionBD = get_connection()
        if conexionBD is None:
            return {"success": 0, "message": "Error de conexión"}

        cursor = conexionBD.cursor(dictionary=True)

        query = """
            SELECT 
              t.id,
              t.tarea,
              t.etapa,
              t.descripcion,
              tp.id AS parametro_id,
              tp.id_proceso
            FROM tareas AS t
            LEFT JOIN tareas_parametros AS tp ON tp.id_tarea = t.id
            WHERE t.etapa = %s
        """
        cursor.execute(query, ('primer contacto',))
        rows = cursor.fetchall()

        cursor.close()
        conexionBD.close()

        return {"success": 1, "data": rows}

    except Exception as e:
        return {"success": 0, "message": f"Error al obtener tareas: {str(e)}"}



def getTareasDisponibles():
    
    try:
        conexionBD = get_connection()
        if conexionBD is None:
            return {"success": 0, "message": "Error de conexión"}

        cursor = conexionBD.cursor(dictionary=True)

        query = """
            SELECT 
              t.id,
              t.tarea,
              t.etapa,
              t.descripcion,
              tp.id AS parametro_id,
              tp.id_proceso
            FROM tareas AS t
            LEFT JOIN tareas_parametros AS tp ON tp.id_tarea = t.id
        """
        # Ejecutar la consulta sin el filtro de etapa
        cursor.execute(query)
        rows = cursor.fetchall()

        cursor.close()
        conexionBD.close()

        return {"success": 1, "data": rows}

    except Exception as e:
        return {"success": 0, "message": f"Error al obtener tareas: {str(e)}"}