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

class ConsultaPainelVendedores
{

    private $connectionmysql;
    private $connection;

    public function __construct()
    {
        global $connectionmysql;
        global $connection;
        $this->connectionmysql = $connectionmysql;
        $this->connection = $connection;
    }

    function getTerceirosDetalhadoVendedor($ano = null, $mes = null, $filiais = null, $vendedor = null, $exibir_filial = false, $connectionmysql)
    {
        $params = [];
        $types = '';

        $sql = "SELECT 
        " . ($exibir_filial ? "c.codigo_filial," : "") . "
        c.nome_funcionario,
        c.codigo_funcionario,
        SUM(c.valor_manipulado) AS valor_manipulado,
        SUM(c.valor_revenda) AS valor_revenda,
        SUM(c.valor_marca_propria) AS valor_marca_propria,
        SUM(c.valor_terceiros) AS valor_terceiros,
        SUM(c.soma) AS soma_total
        FROM coletor_comercial_vendedores c
        INNER JOIN (
        SELECT 
            codigo_funcionario,
            codigo_filial,
            MAX(data_cadastro) AS ultima_data
        FROM coletor_comercial_vendedores
        WHERE 1=1";

        // Subquery filters
        if (!is_null($ano)) {
            $sql .= " AND YEAR(data) = ?";
            $types .= 'i';
            $params[] = $ano;
        }

        if (!is_null($mes)) {
            $sql .= " AND MONTH(data) = ?";
            $types .= 'i';
            $params[] = $mes;
        }

        if (!empty($filiais) && $filiais !== "Todos") {
            $sql .= " AND codigo_filial IN ($filiais)";
        }

        if (!empty($vendedor)) {
            $sql .= " AND codigo_funcionario = ?";
            $types .= 'i';
            $params[] = $vendedor;
        }

        $sql .= "
        GROUP BY  codigo_funcionario, codigo_filial
        ) sub ON 
        c.codigo_funcionario = sub.codigo_funcionario AND 
        c.codigo_filial = sub.codigo_filial AND 
        c.data_cadastro = sub.ultima_data";

        // Group by com ou sem filial
        $sql .= " GROUP BY  c.codigo_funcionario, ";
        if ($exibir_filial) {
            $sql .= "c.codigo_filial, ";
        }
        $sql .= "c.nome_funcionario ";

        $sql .= "ORDER BY nome_funcionario;";

        $stmt = $this->connectionmysql->prepare($sql);
        if (!$stmt) {
            echo "Erro ao preparar: " . $connectionmysql->error;
            return false;
        }

        if ($types) {
            $stmt->bind_param($types, ...$params);
        }

        if (!$stmt->execute()) {
            echo "Erro ao executar: " . $stmt->error;
            return false;
        }

        $result = $stmt->get_result();
        $dados = [];
        while ($row = $result->fetch_assoc()) {
            $dados[] = $row;
        }

        return $dados;
    }
}
