<?php
require '../conexao/conexao.php';

class ConsultasMetasPCP
{
    private $connectionmysql;
    private $connection;

    public function __construct()
    {
        global $connectionmysql, $connection; // Acesso às conexões globais
        $this->connectionmysql = $connectionmysql;
        $this->connection = $connection;
    }

    // public function getVendedores()
    // {
    //     $sql_nome_fun = " SELECT  DISTINCT
    //           FU.NOMEFUNCIONARIO AS NOMEFUN
    //       FROM FUNCIONARIO FU
    //       INNER JOIN FUNCIONARIO_FUNCAO FF ON FU.CODIGO_FUNCIONARIO_FUNCAO = FF.CODIGO
    //       INNER JOIN FUNCIONARIO_DEPTO FD ON FU.CODIGO_FUNCIONARIO_DEPTO = FD.CODIGO
    //       WHERE FU.CODIGO <> 0 and FD.NOMEDEPTO = 'VENDAS' AND FU.ATIVO = '-1' ";

    //     // Aplicar o filtro da filial
    //     if ($codvendedor && $codvendedor != "") {
    //         $sql_nome_fun .= " AND FU.CODIGO = $codvendedor ";
    //     }
    //     if ($filial && $filial != "Todos") {
    //         $sql_nome_fun .= " AND FU.codigo_empresa in (" . ($filial) . ")";
    //     }

    //     $result_nome_fun = ibase_query($connection, $sql_nome_fun);


    //     if (!$result_nome_fun) {
    //         die('Erro na consulta' . $sql_nome_fun . 'Firebird/InterBase: ' . ibase_errmsg());
    //     }

    //     $rowsresult_nome_fun = ibase_fetch_assoc($result_nome_fun);
    // }


    public function get_meta($ano = null, $mes = null, $etapa = null, $funcionario = null)
    {
        $sql_meta = "SELECT id_metas_producao, codigo_funcionario as cdfun, etapa as cdetapa, meta, ano, mes 
                     FROM  metas_producao WHERE 1=1";

        // Verificação de filtros
        if ($ano && $ano != "Selecione") {
            $sql_meta .= " AND ano = " . intval($ano);
        }
        if ($mes && $mes != "Selecione") {
            $sql_meta .= " AND mes = " . intval($mes);
        }
        if ($etapa && $etapa != "Selecione") {
            $sql_meta .= " AND etapa = '" . $etapa . "'";
        }
        if ($funcionario && $funcionario != "Selecione") {
            $sql_meta .= " AND codigo_funcionario = '" . $funcionario . "'";
        }

        $resultmeta = $this->connectionmysql->query($sql_meta);

        if (!$resultmeta) {
            die('Erro na consulta MySQL META: ' . $this->connectionmysql->error);
        }

        $metas = [];
        while ($row = $resultmeta->fetch_assoc()) {
            $metas[] = $row;
        }

        return $metas; // Retorna o array de metas
    }

    public function get_adicao($ano = null, $mes = null, $etapa = null, $funcionario = null)
    {
        $sql_adicao = "SELECT codigo_funcionario AS cdfun, etapa AS cdetapa, SUM(adicao) AS adicao, ano, mes 
                       FROM  adicao_producao WHERE 1=1";

        // Aplicando filtros
        if ($ano && $ano != "Selecione") {
            $sql_adicao .= " AND ano = " . intval($ano);
        }
        if ($mes && $mes != "Selecione") {
            $sql_adicao .= " AND mes = " . intval($mes);
        }
        if ($etapa && $etapa != "Selecione") {
            $sql_adicao .= " AND etapa = '" . $etapa . "'";
        }
        if ($funcionario && $funcionario != "Selecione") {
            $sql_adicao .= " AND codigo_funcionario = '" . $funcionario . "'";
        }

        // Agrupamento
        $sql_adicao .= " GROUP BY codigo_funcionario, etapa, ano, mes";

        $resultadicao = $this->connectionmysql->query($sql_adicao);

        if (!$resultadicao) {
            die('Erro na consulta MySQL: ADICAO ' . $this->connectionmysql->error);
        }

        $adicao = [];
        while ($row = $resultadicao->fetch_assoc()) {
            $adicao[] = $row;
        }

        return $adicao; // Retorna o array de adição
    }

    public function get_funcionarios($ano = null, $mes = null, $etapa = null, $funcionario = null)
    {
        $query_geral = "SELECT pcp.cdfun, fun.nomefun, etp.DESCRICAO, COUNT(pcp.nrrqu) AS QTD
                        FROM fc12500 pcp, fc08000 fun, fc12540 etp
                        WHERE pcp.cdfun = fun.cdfun AND fun.cdcon = '3' 
                        AND pcp.CDETAPA = etp.CDETAPA AND pcp.cdopera = 2";

        // Aplicação dos filtros
        if ($ano && $ano != "Selecione") {
            $query_geral .= " AND EXTRACT(YEAR FROM pcp.data) = " . intval($ano);
        }
        if ($etapa && $etapa != "Selecione") {
            $query_geral .= " AND pcp.cdetapa = '" . $etapa . "'";
        }
        if ($mes && $mes != "Selecione") {
            $query_geral .= " AND EXTRACT(MONTH FROM pcp.data) = " . intval($mes);
        }
        if ($funcionario && $funcionario != "Selecione") {
            $query_geral .= " AND pcp.cdfun = '" . $funcionario . "'";
        }

        $query_geral .= " GROUP BY pcp.cdfun, fun.nomefun, etp.DESCRICAO 
                          ORDER BY fun.nomefun, etp.DESCRICAO";

        $result_geral = ibase_query($this->connection, $query_geral);

        if (!$result_geral) {
            die('Erro na consulta: FUNCIONARIOS' . ibase_errmsg());
        }

        $funcionarios = [];
        while ($row = ibase_fetch_assoc($result_geral)) {
            $funcionarios[] = $row;
        }

        return $funcionarios; // Retorna o array de funcionários
    }
    public function get_detalhes($ano = null, $mes = null, $etapa = null, $cdfuncionario = null, $tab = null)
    {
        $etapa = trim($etapa);

        $sql_detalhes = '';

        if ($tab && $tab == 'adicao') {
            $sql_detalhes = "SELECT ap.id_adicao_producao, ap.adicao,ep.nome_etapa, ep.id_etapa
                         FROM  adicao_producao ap 
                         LEFT JOIN etapas_pcp ep ON ep.id_etapa = ap.etapa 
                         WHERE ap.codigo_funcionario = " . intval($cdfuncionario);
        } elseif ($tab && $tab == 'meta') {
            $sql_detalhes = "SELECT mp.id_metas_producao, mp.meta,mp.ano,mp.mes,mp.dia, ep.nome_etapa, ep.id_etapa
                         FROM  metas_producao mp
                         LEFT JOIN etapas_pcp ep ON ep.id_etapa = mp.etapa 
                         WHERE mp.codigo_funcionario = " . intval($cdfuncionario);
        } else {
            return [];
        }
        if ($ano && $ano != "Selecione") {
            $sql_detalhes .= " AND " . ($tab == 'adicao' ? "ap" : "mp") . ".ano = " . intval($ano);
        }

        if ($mes && $mes != "Selecione") {
            $sql_detalhes .= " AND " . ($tab == 'adicao' ? "ap" : "mp") . ".mes = " . intval($mes);
        }

        if ($etapa && $etapa != "Selecione") {
            $sql_detalhes .= " AND ep.id_etapa = '" . $this->connectionmysql->real_escape_string($etapa) . "'";
        }

        if ($cdfuncionario) {
            $sql_detalhes .= " AND (" . ($tab == 'adicao' ? "ap" : "mp") . ".codigo_funcionario = " . intval($cdfuncionario) . ")";
        }

        $result_detalhes = $this->connectionmysql->query($sql_detalhes);

        if (!$result_detalhes) {
            die('Erro na consulta MySQL: Detalhes ' . $this->connectionmysql->error);
        }

        $detalhes = [];
        while ($row = $result_detalhes->fetch_assoc()) {
            $detalhes[] = $row;
        }

        return $detalhes;
    }
    public function get_meta_etapa($ano = null, $mes = null, $etapa = null, $filial = null)
    {

        $sql_meta = "SELECT e.nome_etapa, e.codigo_etapa, m.id_metas_etapas_pcp, m.id_etapa, m.meta, m.ano, m.mes,m.codigo_filial
    FROM etapas_pcp as e
    LEFT JOIN metas_etapas_pcp as m ON e.codigo_etapa = m.id_etapa ";

        if ($ano && $ano != "Selecione") {
            $sql_meta .= " AND ano = " . intval($ano);
        }
        if ($mes && $mes != "Selecione") {
            $sql_meta .= " AND mes = " . intval($mes);
        }
        if ($filial && $filial != "Todos") {
            $sql_meta .= " AND m.codigo_filial = " . intval($filial);
        }

        // if ($etapa && $etapa != "Selecione") {
        //     $sql_meta .= " AND e.codigo_etapa = '" . $this->connectionmysql->real_escape_string($etapa) . "'";
        // }

        $resultmeta = $this->connectionmysql->query($sql_meta);

        if (!$resultmeta) {
            die('Erro na consulta MySQL: ' . $this->connectionmysql->error);
        }

        $metas = [];
        while ($row = $resultmeta->fetch_assoc()) {
            $metas[] = $row;
        }

        return $metas;
    }
}
