<?php
class EmpleadosModel {
    private $db;
    private $table = 'Plantilla';

    public function __construct($db) {
        $this->db = $db;
    }

    /**
     * Obtiene todos los empleados activos por PDV, usando CURP como identificador
     * @param string $departamentoInterno
     * @return array
     */
    public function getActivosByDepartamentoInterno($departamentoInterno) {
        if(empty($departamentoInterno)) {
            throw new Exception("El departamento interno es requerido");
        }
        $departamentoInterno = trim($departamentoInterno);
        $filtroEspecial = (strtoupper($departamentoInterno) === 'GRP TDA ADMINISTRACION MER');
        $query = "SELECT 
                    `CURP` AS curp,
                    `NOMBRES` AS nombres,
                    `APELLIDO PATERNO` AS apellido_paterno,
                    `APELLIDO MATERNO` AS apellido_materno,
                    `GENERO` AS genero,
                    `PUESTO` AS puesto,
                    `MODALIDAD` AS modalidad,
                    `SUELDO MENSUAL` AS sueldo_mensual,
                    `FECHA DE INGRESO` AS fecha_ingreso,
                    `TELEFONO PERSONAL` AS telefono_personal,
                    `CORREO CORPORATIVO` AS correo_corporativo,
                    `ATTUID` AS attuid,
                    `ID` AS id_empleado,
                    `DEPARTAMENTO INTERNO` AS departamento_interno
                FROM " . $this->table . " 
                WHERE UPPER(`Estatus`) = 'ACTIVO' 
                AND UPPER(TRIM(`DEPARTAMENTO INTERNO`)) = UPPER(TRIM(:departamento))";
        if ($filtroEspecial) {
            $query .= "\n                AND `PUESTO` IS NOT NULL
                AND `PUESTO` != ''
                AND UPPER(`PUESTO`) NOT IN ('NOMINAL', 'INTENDENCIA', 'INTENDENTE', 'SOCIO')
                AND UPPER(`PUESTO`) NOT LIKE '%REGIONAL%'
                AND UPPER(`PUESTO`) NOT LIKE '%LIMPIEZA%'
                AND UPPER(`PUESTO`) NOT LIKE '%DILIGENCIERO%'";
        }
        $stmt = $this->db->prepare($query);
        $stmt->bindParam(':departamento', $departamentoInterno, PDO::PARAM_STR);
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}