# login.py
import sys
import os
import hashlib
import random

# Agrega la ruta absoluta al sys.path
sys.path.append('/var/www/html/config')

from cnxpdo import get_connection

from datetime import datetime
import hashlib

def login(data):
    conexionBD = get_connection()
    if conexionBD is None:
        return {"success": 0, "message": "Error de conexión"}

    email = data.get("email")
    password = data.get("password")

    if email and password:
        cursor = conexionBD.cursor(dictionary=True)
        query = """
            SELECT u.*, u.id AS idUsuario, u.idperfil AS idPerfil, e.id AS idEmp,
                e.nombres, e.apellidos, e.tipo_doc, e.documento, e.id_cargo, e.correo_alterno,
                e.correo_corporativo, e.telefono, e.direccion, e.imagen, e.status, s.status AS nomstatus,
                ep.perfiles AS perfil, ec.cargo 
            FROM usuarios u 
            INNER JOIN empleados e ON u.idEmpleado = e.id 
            LEFT JOIN status s ON s.id = e.status 
            LEFT JOIN empleados_perfiles ep ON u.idperfil = ep.id 
            LEFT JOIN empleados_cargos ec ON e.id_cargo = ec.id 
            WHERE e.correo_corporativo = %s
        """
        cursor.execute(query, (email,))
        user = cursor.fetchone()

        if user:
            if user["status"] == 2:
                cursor.close()
                conexionBD.close()
                return {
                    "success": 1, 
                    "message": "No puede iniciar sesión, el usuario está inactivo",
                    "status": 2
                }
            if user["status"] == 3:
                cursor.close()
                conexionBD.close()
                return {
                    "success": 1, 
                    "message": "No puede iniciar sesión, el usuario está bloqueado",
                    "status": 3
                }
            if user["status"] == 1 and (password == user["pass"] or password == user["passtemp"]):
                # Actualizar la última sesión
                last_session = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                cursor.execute("UPDATE usuarios SET last_session = %s WHERE id = %s", (last_session, user["idUsuario"]))
                conexionBD.commit()
                cursor.close()
                conexionBD.close()
                return {"success": 1, "message": "Login successful", "data": user}
            else:
                cursor.close()
                conexionBD.close()
                return {"success": 0, "message": "Contraseña inválida"}

        cursor.close()
        conexionBD.close()
        return {"success": 0, "message": "Usuario no encontrado"}

    conexionBD.close()
    return {"success": 0, "message": "Usuario no encontrado"}



def codigoTemporal(input):
    email = input.get('email')
    if not email:
        return {"success": 0, "message": "El correo electrónico es requerido"}

    random_code = random.randint(100000, 999999)
    random_code_encrypted = hashlib.md5(str(random_code).encode()).hexdigest()

    conexionBD = get_connection()
    if conexionBD is None:
        return {"success": 0, "message": "Error de conexión"}

    try:
        cursor = conexionBD.cursor(dictionary=True)
        query = """
            SELECT u.id, CONCAT(e.nombres, ' ', e.apellidos) AS nombre FROM empleados e
            INNER JOIN usuarios u ON e.id = u.idEmpleado
            WHERE e.correo_corporativo = %s
        """
        cursor.execute(query, (email,))
        user_data = cursor.fetchone()

        if user_data:
            id = user_data['id']
            nom_user = user_data['nombre']

            update_query = """
                UPDATE usuarios SET passtemp = %s WHERE id = %s
            """
            cursor.execute(update_query, (random_code_encrypted, id))
            conexionBD.commit()

            return {
                "success": 1,
                "message": "Código temporal generado",
                "code": random_code,
                "user": nom_user
            }
        else:
            return {"success": 0, "message": "El usuario no existe, por favor verifique el correo electrónico"}

    except Exception as e:
        return {"success": 0, "message": f"Error: {str(e)}"}

    finally:
        cursor.close()
        conexionBD.close()



def asistentess(data):
    id_empresa = data.get('id_empresa')
    print("ID Empresa recibido:", id_empresa)  # Debugging line
    if not id_empresa:
        return {"success": 0, "message": "Please retry"}

    conexionBD = get_connection()
    if conexionBD is None:
        return {"success": 0, "message": "Error de conexión"}

    try:
        cursor = conexionBD.cursor(dictionary=True)
        query = "SELECT * FROM asistentes WHERE idempresa = %s"
        cursor.execute(query, (id_empresa,))
        asistentes = cursor.fetchall()

        if asistentes:
            return {"success": 1, "data": asistentes}
        else:
            return {"success": 0, "message": "Asistentes no encontrados"}

    except Exception as e:
        return {"success": 0, "message": f"Error al obtener los asistentes: {str(e)}"}

    finally:
        cursor.close()
        conexionBD.close()
