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

class Preferancias
{
    private $connectionmysql;
    private $connection;

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

    function get_index_geral()
    {
        $padrao = ['Periodo', 'Operação'];

        // Consulta para buscar os valores existentes que não são 'Metas Visitadores'
        $sql_preferencia = "SELECT tipo_meta FROM configuracoes WHERE tipo_meta <> 'Metas Visitadores' AND tipo_meta <> 'Mês' AND tipo_meta <> 'Quinzena'";
        $resultmeta = $this->connectionmysql->query($sql_preferencia);

        $existentes = [];
        $faltantes = [];

        // Coleta os valores existentes no banco
        if ($resultmeta && $resultmeta->num_rows > 0) {
            while ($row = $resultmeta->fetch_assoc()) {
                if ($row['tipo_meta'] == 'Mês' || $row['tipo_meta'] == 'Quinzena' ) {
                    continue;
                }
                $existentes[] = $row['tipo_meta'];
            }
        }

        // Verifica quais valores do padrão estão faltando
        foreach ($padrao as $item) {
            if (!in_array($item, $existentes)) {
                $faltantes[] = $item;
            }
        }

        // Insere os valores faltantes no banco
        if (!empty($faltantes)) {
            foreach ($faltantes as $item_faltante) {
                $sql_inserir = "INSERT INTO configuracoes (tipo_meta) VALUES ('$item_faltante')";

                 if ($this->connectionmysql->query($sql_inserir)) {
                     //echo "Registro '$item_faltante' inserido com sucesso!<br>";
                 } else {
                     //echo "Erro ao inserir '$item_faltante': " . $this->connectionmysql->error . "<br>";
                 }
            }
        } else {
            //echo "Nenhum valor faltando no padrão.<br>";
        }

        // Retorna todos os valores existentes, atualizados após possíveis inserções
        $sql_atualizado = "SELECT * FROM configuracoes WHERE tipo_meta <> 'Metas Visitadores' AND tipo_meta <> 'Mês' AND tipo_meta <> 'Quinzena' ORDER BY tipo_meta;";
        $resultmeta_atualizado = $this->connectionmysql->query($sql_atualizado);

        $result = [];
        if ($resultmeta_atualizado && $resultmeta_atualizado->num_rows > 0) {
            while ($row = $resultmeta_atualizado->fetch_assoc()) {
                if ($row['tipo_meta'] == 'Mês' || $row['tipo_meta'] == 'Quinzena') {
                    continue;
                }
                $result[] = $row;
            }
        }

        return $result;
    }


    public function updateMetasVisitadores($valor1, $valor2)
    {
        // Escapar os valores para evitar injeção de SQL
        $valor1 = $this->connectionmysql->real_escape_string($valor1);
        $valor2 = $this->connectionmysql->real_escape_string($valor2);

        // Verificar se o tipo_meta já existe
        $sql_verifica = "SELECT * FROM configuracoes WHERE tipo_meta = 'Metas Visitadores'";
        $result_verifica = $this->connectionmysql->query($sql_verifica);

        if (!$result_verifica) {
            throw new Exception("Erro ao verificar tipo_meta: " . $this->connectionmysql->error);
        }

        // Se não existir, criar o registro
        if ($result_verifica->num_rows == 0) {
            $sql_insert = "INSERT INTO configuracoes (tipo_meta, valor1, valor2) 
                       VALUES ('Metas Visitadores', '$valor1', '$valor2')";
            if (!$this->connectionmysql->query($sql_insert)) {
                throw new Exception("Erro ao inserir novo tipo_meta: " . $this->connectionmysql->error);
            }
        } else {
            // Atualizar os valores do registro existente
            $sql_update = "UPDATE configuracoes 
                       SET valor1 = '$valor1', valor2 = '$valor2'
                       WHERE tipo_meta = 'Metas Visitadores'";
            if (!$this->connectionmysql->query($sql_update)) {
                throw new Exception("Erro ao atualizar tipo_meta: " . $this->connectionmysql->error);
            }
        }

        return true;
    }
    public function getMetasVisitadores()
    {
        $sql_preferencia = "SELECT c.id_configuracoes, c.tipo_meta, c.valor1, c.valor2
            FROM  configuracoes c 
            WHERE c.tipo_meta = 'Metas Visitadores'";

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

        $result = [];

        if ($resultmeta && $resultmeta->num_rows > 0) {
            while ($row = $resultmeta->fetch_assoc()) {
                $result[] = $row;
            }
        }
        return $result;
    }
}
