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

class ConsultaClientesValores
{

    private $connectionmysql;
    private $connection;

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


    public function get_cliente_index($filial = null, $DataInicial = null, $DataFinal = null, $tabela = null)
    {

        $query_clientes = "
    SELECT 
        TAB.CODLJ AS COD_Filial,
        TAB.CLI AS CODIGO_CLIENTE,
        C.NOMECLIENTE,
        C.EMAIL1,

        (SELECT FIRST 1 TL.TELEFONEPREFIXO || ' ' || TL.TELEFONE
         FROM CADASTRO_TELEFONE TL 
         WHERE TL.TIPO_CADASTRO = 1 
         AND TL.CODIGO_CADASTRO = C.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 = C.CODIGO 
         AND TL.PRINCIPAL = 0) AS telefone2,

        TAB.COUNTALOP AS QTD_MANIPULADO,
        TAB.SUMALOP AS VLR_MANIPULADO,
        TAB.COUNTREV AS QTD_REVENDA,
        TAB.SUMREV AS VLR_REVENDA,
        (TAB.COUNTALOP + TAB.COUNTHOM + TAB.COUNTREV) AS QTD_TOTAL,
        (TAB.SUMALOP + TAB.SUMHOM + TAB.SUMREV) AS VLR_TOTAL
    FROM (
    ";

        /* -------------------------
       ALOPATIA SE tabela = 1 OU tabela vazio
       ------------------------- */
        if ($tabela == 1 || empty($tabela)) {

            $query_clientes .= "
        SELECT  
            A1.AVIADA_LJ AS CODLJ,
            A1.AVIADA_LJ || ' - ' || EP.NOMEFANTASIA AS LJ,
            A1.CODIGO_CLIENTE AS CLI,
            COUNT(DISTINCT A1.CODIGO) AS COUNTALOP,
            SUM(A2.VALORFORMULA_VENDA_DESC) AS SUMALOP,
            0 AS SUMHOM,
            0 AS COUNTHOM,
            0 AS SUMREV,
            0 AS COUNTREV
        FROM ATENDIMENTO_A1 A1
        INNER JOIN ATENDIMENTO_A2 A2 ON A1.CODIGO = A2.CODIGO_ATEND_A1
        INNER JOIN EMPRESA EP ON EP.CODIGO = A1.AVIADA_LJ
        WHERE CAST(A1.AVIADA_DT AS DATE) BETWEEN '{$DataInicial}' AND '{$DataFinal}'
        AND A1.STATUS_MOV = -1
        AND A1.TIPO_ATENDIMENTO = 1
        AND A1.CANCELAMENTO_LJ IS NULL
        AND A2.CONCLUIDOFORMULA = -1
        ";

            if ($filial && $filial != "Todos") {
                $query_clientes .= " AND A1.AVIADA_LJ IN (" . intval($filial) . ") ";
            }

            $query_clientes .= " GROUP BY A1.AVIADA_LJ, EP.NOMEFANTASIA, A1.CODIGO_CLIENTE ";
        }

        /* -------------------------
       REVENDA SE tabela = 2 OU tabela vazio
       ------------------------- */
        if ($tabela == 2 || empty($tabela)) {

            // Se já existe bloco anterior → adicionar UNION
            if (!empty($tabela) && $tabela != 2) {
                $query_clientes .= " UNION ";
            } elseif (empty($tabela)) {
                $query_clientes .= " UNION ";
            }

            $query_clientes .= "
        SELECT  
            A1.AVIADA_LJ AS CODLJ,
            A1.AVIADA_LJ || ' - ' || EP.NOMEFANTASIA AS LJ,
            A1.CODIGO_CLIENTE AS CLI,
            0 AS COUNTALOP,
            0 AS SUMALOP,
            0 AS SUMHOM,
            0 AS COUNTHOM,
            SUM(A1.VALORVENDA_DESC) AS SUMREV,
            COUNT(DISTINCT A1.CODIGO) AS COUNTREV
        FROM ATENDIMENTO_A1 A1
        INNER JOIN EMPRESA EP ON EP.CODIGO = A1.AVIADA_LJ
        WHERE CAST(A1.AVIADA_DT AS DATE) BETWEEN '{$DataInicial}' AND '{$DataFinal}'
        AND A1.STATUS_MOV = -1
        AND A1.TIPO_ATENDIMENTO = 2
        AND A1.CANCELAMENTO_LJ IS NULL
        ";

            if ($filial && $filial != "Todos") {
                $query_clientes .= " AND A1.AVIADA_LJ IN (" . intval($filial) . ") ";
            }

            $query_clientes .= " GROUP BY A1.AVIADA_LJ, EP.NOMEFANTASIA, A1.CODIGO_CLIENTE ";
        }

        $query_clientes .= "
    ) TAB
    INNER JOIN CLIENTE C ON TAB.CLI = C.CODIGO
    WHERE C.CODIGO IS NOT NULL
    AND C.NOMECLIENTE IS NOT NULL
    AND C.NOMECLIENTE <> ''
    ORDER BY VLR_TOTAL DESC
    ";

        // EXECUTA CONSULTA
        $result_clientes = ibase_query($this->connection, $query_clientes);

        $clientes_recebidos = [];
        while ($row = ibase_fetch_assoc($result_clientes)) {
            $clientes_recebidos[] = $row;
        }

        return $clientes_recebidos;
    }



    public function get_cliente_detalhe_manpilado($filial = null, $DataInicial = null, $DataFinal = null,  $id_cliente = null)
    {

        $query_clientes = " SELECT  
        A1.AVIADA_LJ AS CODLJ,
        A1.AVIADA_LJ || ' - ' || EP.NOMEFANTASIA AS LJ,
        A1.CODIGO_CLIENTE AS CLI,
        (CR.SIGLA || '-' || ME.CR_ESTADO || '-' || ME.CRM) AS CRM,
        ME.nomemedico,
        A1.codigo as requisicao,
        SUM(A2.VALORFORMULA_VENDA_DESC) AS VALOR
        FROM ATENDIMENTO_A1 A1
        INNER JOIN ATENDIMENTO_A2 A2 ON A1.CODIGO = A2.CODIGO_ATEND_A1
        INNER JOIN FORMAFARMACEUTICA FF ON A2.CODIGO_FORMAFARMACEUTICA = FF.CODIGO
        INNER JOIN FORMAFARMACEUTICA_LABORATORIO FFL ON FF.CODIGO_LABORATORIO = FFL.CODIGO
        INNER JOIN EMPRESA EP ON EP.CODIGO = A1.AVIADA_LJ
        INNER JOIN CLIENTE C ON  A1.CODIGO_CLIENTE = C.CODIGO
        INNER JOIN MEDICO ME ON ME.CODIGO = A1.CODIGO_MEDICO
        LEFT JOIN MEDICO_CR CR ON ME.CODIGO_CONSELHO_REGIONAL = CR.CODIGO
        LEFT JOIN MEDICO_ESPECIALIDADE ESPEC ON ESPEC.CODIGO = ME.CODIGO_MEDICO_ESPECIALIDADE
        WHERE CAST(A1.AVIADA_DT as DATE) BETWEEN '{$DataInicial}' AND '{$DataFinal}'
        AND A1.STATUS_MOV = -1
        AND A1.TIPO_ATENDIMENTO = 1
        AND A1.CANCELAMENTO_LJ IS NULL
        AND A2.CONCLUIDOFORMULA = -1 ";

        if (!empty($id_cliente)) {
            $query_clientes .= " AND C.CODIGO = " . intval($id_cliente);
        }

        if ($filial && $filial != "Todos") {
            $query_clientes .= " AND A1.aviada_lj IN (" . intval($filial) . ")";
        }

        $query_clientes .= "    GROUP BY A1.AVIADA_LJ, EP.NOMEFANTASIA, A1.CODIGO_CLIENTE,A1.codigo ,ME.nomemedico, (CR.SIGLA || '-' || ME.CR_ESTADO || '-' || ME.CRM)";


        $result_clientes = ibase_query($this->connection, $query_clientes);

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

        return $clientes_recebidos;
    }



    public function get_cliente_detalhe_varejo($filial = null, $DataInicial = null, $DataFinal = null, $id_cliente = null)
    {

        $query_clientes = "SELECT  
        A1.AVIADA_LJ AS CODLJ,
        A1.AVIADA_LJ || ' - ' || EP.NOMEFANTASIA AS LJ,
        A1.CODIGO_CLIENTE AS CLI,

        A1.codigo as cupom,
        A3.codigo_produto,
        EG.nomeproduto,
        SUM(A3.valorvenda_desc) as valor

        FROM ATENDIMENTO_A1 A1

        INNER JOIN ATENDIMENTO_A3 A3 ON A1.CODIGO = A3.codigo_atend_a1
        INNER JOIN EMPRESA EP ON EP.CODIGO = A1.AVIADA_LJ
        INNER JOIN CLIENTE C ON  A1.CODIGO_CLIENTE = C.CODIGO
        inner join ESTOQUE_GERAL EG ON A3.CODIGO_PRODUTO = EG.CODIGO

        WHERE CAST(A1.AVIADA_DT as DATE) BETWEEN '{$DataInicial}' AND '{$DataFinal}'
        AND A1.STATUS_MOV = -1
        AND A1.TIPO_ATENDIMENTO = 2
        AND A1.CANCELAMENTO_LJ IS NULL";

        if (!empty($id_cliente)) {
            $query_clientes .= " AND C.CODIGO = " . intval($id_cliente);
        }

        if ($filial && $filial != "Todos") {
            $query_clientes .= " AND A1.aviada_lj IN (" . intval($filial) . ")";
        }

        $query_clientes .= " GROUP BY A1.AVIADA_LJ, EP.NOMEFANTASIA, A1.CODIGO_CLIENTE,A1.codigo,
        A3.codigo_produto,EG.nomeproduto,A3.valorvenda_desc ";

        $result_clientes = ibase_query($this->connection, $query_clientes);

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

        return $clientes_recebidos;
    }
}
