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

class ConsultasClientes
{
    private $connectionmysql;
    private $connection;

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

    public function get_clientes_index($filial = null, $min_inativo = null, $max_inativo = null, $orcamentos = null)
    {
        $sql_cliente = "SELECT
                CL.CODIGO AS cod_cliente,
                CL.NOMECLIENTE AS nome_cliente,
                MAX(A1.CADASTRO_DT) AS data_ultimo_orcamento,
                DATEDIFF(DAY, MAX(A1.CADASTRO_DT), CURRENT_TIMESTAMP) AS dias_sem_orcamento,
                (SELECT FIRST 1 TL.TELEFONEPREFIXO || ' ' || TL.TELEFONE
                FROM CADASTRO_TELEFONE TL
                WHERE TL.TIPO_CADASTRO = 1
                AND TL.CODIGO_CADASTRO = CL.CODIGO
                AND TL.PRINCIPAL = -1) AS TEL,
                (SELECT FIRST 1 TL.TELEFONEPREFIXO || ' ' || TL.TELEFONE
                FROM CADASTRO_TELEFONE TL
                WHERE TL.TIPO_CADASTRO = 1
                AND TL.CODIGO_CADASTRO = CL.CODIGO
                AND TL.PRINCIPAL = 0) AS TELEFONE2,
                CL.EMAIL1
            FROM CLIENTE CL
            LEFT JOIN ATENDIMENTO_A1 A1 ON A1.CODIGO_CLIENTE = CL.CODIGO
                AND A1.TIPO_ATENDIMENTO = 1";
        // Filtros dinâmicos
        if (!empty($filial) && $filial !== 'Todos') {
            $sql_cliente .= " AND A1.CADASTRO_LJ IN  ($filial)";
        }
        if (!empty($orcamentos) && $orcamentos !== 'Todos') {
            if ($orcamentos == '1') {
                $sql_cliente .= "  AND A1.STATUS_MOV = -1";
                if ($orcamentos == '0') {
                    $sql_cliente .= "  AND A1.STATUS_MOV = 0";
                }
            }
        }
        $sql_cliente .= " GROUP BY
                CL.CODIGO,
                CL.NOMECLIENTE,
                CL.EMAIL1

           
            ";

        // if (!empty($cliente) && $cliente !== 'Todos') {
        //     $sql_cliente .= " AND UPPER(c.NOMECLI) LIKE UPPER('%" . $cliente . "%')";
        // }
        if (!empty($min_inativo) && !empty($max_inativo)) {
            $sql_cliente .= "HAVING MAX(A1.CADASTRO_DT) BETWEEN DATEADD(DAY, -$max_inativo, CURRENT_TIMESTAMP) AND DATEADD(DAY, -$min_inativo, CURRENT_TIMESTAMP)";
        } elseif (!empty($min_inativo)) {
            $sql_cliente .= "HAVING MAX(A1.CADASTRO_DT) < DATEADD(DAY, -$min_inativo, CURRENT_TIMESTAMP)";
        } elseif (!empty($max_inativo)) {
            $sql_cliente .= "HAVING MAX(A1.CADASTRO_DT) > DATEADD(DAY, -$max_inativo, CURRENT_TIMESTAMP)";
        } else {
            $sql_cliente .= " HAVING MAX(A1.CADASTRO_DT) IS NULL ";
        }

        // Agrupar por cliente
        $sql_cliente .= "  ORDER BY data_ultimo_orcamento DESC";

        // Preparar e executar a consulta
        $stmt = ibase_prepare($this->connection, $sql_cliente);
        if ($stmt === false) {
            die('Erro na preparação da consulta: ' . ibase_errmsg());
        }

        $result = ibase_execute($stmt);

        $clientes_orcamentos = [];
        if ($result) {
            while ($row = ibase_fetch_assoc($result)) {
                $clientes_orcamentos[] = $row;
            }
        } else {
            die('Erro na consulta: ' . ibase_errmsg());
        }

        return $clientes_orcamentos;
    }

    public function get_cliente_detalhes($id = null, $filial = null, $DataInicial = null, $DataFinal = null, $vendedor = null, $tabela = null)
    {

        $sql_cliente = " SELECT  c.NOMECLI,o.cdcli,o.cdfil,
        cliinfo.NRDDD, cliinfo.NRTEL, cliinfo.nrdddfax as dddcelular, cliinfo.nrfax as celular,
        o.cdfil as filial,
        o.nrorc as orcamento,
        o.serieo as formula,
        v.cdfun as cod_vendedor,
        v.nomefun as nome_vendedor,
        SUM(o.PRCOBR - o.vrdsc) AS TOTAL_VENDAS
        FROM fc15100 o
        INNER JOIN FC04000 m ON o.nrcrm = m.nrcrm AND o.ufcrm = m.ufcrm AND o.pfcrm = m.pfcrm 
        INNER JOIN FC01000 f ON o.cdfil = f.CDFIL 
        INNER JOIN FC07000 c ON c.CDCLI  = o.CDCLI
        INNER JOIN fc08000 v ON o.cdfunre = v.cdfun  AND o.cdfil = v.cdcon
        LEFT JOIN FC07200 as cliinfo ON (cliinfo.CDCLI = c.CDCLI)  AND cliinfo.ocender = (
        SELECT MIN(ocender) 
        FROM fc07200 
        WHERE o.cdcli = c.cdcli
        )  
        WHERE 1 = 1";

        $params = [];
        if (!empty($id)) {
            $sql_cliente .= " AND o.cdcli = ?";
            $params[] = $id;
        }
        if (!empty($tabela) && $tabela == '2') {
            $sql_cliente .= " AND o.qtaprov = '0'";
        }
        if (!empty($tabela) && $tabela == '1') {
            $sql_cliente .= " AND o.qtaprov = '1'";
        }

        if (!empty($vendedor) && $vendedor !== 'Todos') {
            $sql_cliente .= " AND v.cdfun IN ($vendedor)";
        }
        if (!empty($filial) && $filial !== 'Todos') {
            $sql_cliente .= " AND o.cdfil IN($filial)";
        }
        if (!empty($DataInicial) && !empty($DataFinal)) {
            $sql_cliente .= " AND dtentr BETWEEN '$DataInicial' AND '$DataFinal'";
        } elseif (!empty($DataInicial)) {
            $sql_cliente .= " AND dtentr >= '$DataInicial'";
        } elseif (!empty($DataFinal)) {
            $sql_cliente .= " AND dtentr <= '$DataFinal'";
        }

        // Agrupar por cliente
        $sql_cliente .= " GROUP BY c.NOMECLI,cliinfo.NRDDD, cliinfo.NRTEL, cliinfo.nrdddfax, cliinfo.nrfax,o.cdfil ,
         o.nrorc,o.serieo,v.cdfun,v.nomefun,o.CDCLI,o.cdfunre
         order by TOTAL_VENDAS desc";

        // Preparar e executar a consulta
        $stmt = ibase_prepare($this->connection, $sql_cliente);
        if ($stmt === false) {
            die('Erro na preparação da consulta: ' . ibase_errmsg());
        }

        $result = ibase_execute($stmt, ...$params);

        $clientes_orcamentos = [];
        if ($result) {
            while ($row = ibase_fetch_assoc($result)) {
                $clientes_orcamentos[] = $row;
            }
        } else {
            die('Erro na consulta: ' . ibase_errmsg());
        }

        return $clientes_orcamentos;
    }
    public function get_cliente($id = null)
    {
        $sql_cliente = "SELECT FIRST 1  c.NOMECLI, o.cdcli, o.cdfil, cliinfo.NRDDD, cliinfo.NRTEL,
        cliinfo.nrdddfax AS dddcelular, cliinfo.nrfax AS celular, o.cdfil AS filial
        FROM fc15100 o
         INNER JOIN FC07000 c ON c.CDCLI  = o.CDCLI
        LEFT JOIN FC07200 AS cliinfo
          ON cliinfo.CDCLI = o.CDCLI
         AND cliinfo.ocender = (
          SELECT MIN(ocender)
          FROM fc07200 
          WHERE cdcli = o.cdcli
         )
        WHERE 1 = 1";

        $params = [];
        if (!empty($id)) {
            $sql_cliente .= " AND o.cdcli = ?";
            $params[] = $id;
        }

        // Preparar e executar a consulta
        $stmt = ibase_prepare($this->connection, $sql_cliente);
        if ($stmt === false) {
            die('Erro na preparação da consulta: ' . ibase_errmsg());
        }

        $result = ibase_execute($stmt, ...$params);

        $clientes_orcamentos = [];
        if ($result) {
            while ($row = ibase_fetch_assoc($result)) {
                $clientes_orcamentos[] = $row;
            }
        } else {
            die('Erro na consulta: ' . ibase_errmsg());
        }

        return $clientes_orcamentos;
    }
}
