<?php
// Incluir o arquivo de conexão
require '../conexao/conexao.php';

/**
 * Exibe a página de erro personalizada
 * @param string $message Mensagem de erro detalhada
 */
function showLicenseError($message) {
    global $connectionmysql_ext;
    
    // Se houver erro de conexão, pega a mensagem de erro
    if (isset($connectionmysql_ext) && $connectionmysql_ext->connect_error) {
        $error_message = $connectionmysql_ext->connect_error;
    } else {
        $error_message = $message;
    }
    
    // Inclui o template de erro
    include __DIR__ . '/error_template.php';
    exit();
}

$servername = "mandareceita.com.br"; 
$username   = "u517421119_ativo";
$password   = "B@ckEnd!DB#55DB";
$dbname     = "u517421119_ativo";

// Criando a conexão
@$connectionmysql_ext = new mysqli($servername, $username, $password, $dbname);

// Verificando a conexão
if ($connectionmysql_ext->connect_error) {
    showLicenseError("Erro ao conectar ao servidor de licenças");
}

// Iniciar a sessão em PHP
session_start();

// Verificar se o formulário foi enviado
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Coletar dados do formulário
    $pLogin = $_POST['txtNome'] ?? ''; // O operador '??' é usado para retornar um valor padrão se a entrada não existir.
    $senha_hash = $_POST['txtSenha'] ?? '';
    $pSenha = md5($senha_hash);

    // Proteger contra SQL injection
    $pLogin = $connectionmysql_ext->real_escape_string($pLogin);
    $pSenha = $connectionmysql_ext->real_escape_string($pSenha);

    // Construir a consulta SQL para autenticar o usuário localmente
    $strSQL = "SELECT 
    u.id_usuario,
    u.login,
    u.id_pessoa,
    p.id_perfil,
    p.perfil,
    pe.nome,
    pe.situacao
FROM 
    usuario u
INNER JOIN 
    perfil_usuario up ON u.id_usuario = up.id_usuario
INNER JOIN 
    perfil p ON p.id_perfil = up.id_perfil
INNER JOIN 
    pessoa pe ON u.id_pessoa = pe.id_pessoa
    WHERE u.login = '{$pLogin}' 
AND u.senha = '{$pSenha}'";

    // Executar a consulta SQL
    $result = $connectionmysql->query($strSQL);

    if ($result->num_rows > 0) {
        // Usuário encontrado
        $row = $result->fetch_assoc();
        if ($row['situacao'] === 'I') {
            session_unset(); // Remove todas as variáveis de sessão
            session_destroy(); // Destroi a sessão
            header("Location: ../login.php?status=erro&message=Usuário inativo");
            exit();
        }
        // Definir variáveis de sessão
        $_SESSION['CodUsuario'] = $row['id_usuario'];
       // $_SESSION['CodColaborador'] = $row['cod_fcerta'];
       // $_SESSION['Gestao'] = $row['gestao'];
        $_SESSION['login'] = $row['login'];
        $_SESSION['NomeUsuario'] = $row['nome'];
        $_SESSION['CodPerfil'] = $row['id_perfil'];
        $_SESSION['NomePerfil'] = $row['perfil'];
       // $_SESSION['Cidade'] = $row['cidade'];
       // $_SESSION['CodigoFilial'] = $row['filiais'];
        $_SESSION['CONTADOR'] = 0;

        // Se houver conexão com a internet, validar a licença

        // Consultar a licença na nuvem
        $cnpj = ''; // Inicializar a variável CNPJ
        $query_cnpj = "SELECT cnpj FROM licenca"; // Consulta SQL para obter o CNPJ
        $result_cnpj = $connectionmysql->query($query_cnpj); // Executar a consulta
        if ($result_cnpj->num_rows > 0) {
            $row_cnpj = $result_cnpj->fetch_assoc();
            $cnpj = $row_cnpj['cnpj']; // Armazenar o CNPJ
        }
        $strSQL_licenca = "SELECT * FROM licencas WHERE cliente_cnpj = '$cnpj'";
        $result_licenca = $connectionmysql_ext->query($strSQL_licenca);

        if ($result_licenca->num_rows > 0) {
            // Licença encontrada
            $row_licenca = $result_licenca->fetch_assoc();
            // Verificar se a licença expirou
            $data_atual = date('Y-m-d');
            if ($row_licenca['data_expiracao'] < $data_atual) {
                // Licença expirada
                $_SESSION['error_msg'] = "Licença expirada";
                session_unset(); // Remove todas as variáveis de sessão
                session_destroy(); // Destroi a sessão
                header("Location: ../login.php?status=erro&message=Licença expirada");
                exit();
            }

            // Verificar quantidade de acessos simultâneos
            $quantidade_acessos_simultaneos = $row_licenca['quantidade_acessos_simultaneos'];
            // Implemente a lógica para verificar se a quantidade de acessos simultâneos foi excedida
            // Aqui você pode verificar o número de sessões ativas ou o número de acessos simultâneos registrados no seu sistema
        } else {

            function showLicenseError($message)
            {
                global $connectionmysql_ext;
                $error_message = $message;
                if (isset($connectionmysql_ext) && $connectionmysql_ext->connect_error) {
                    $error_message = $connectionmysql_ext->connect_error;
                }
                include __DIR__ . 'error_template.php';
                exit();
            }

            // Replace the database connection error check (around line 14)
            if ($connectionmysql_ext->connect_error) {
                showLicenseError("Erro ao conectar ao servidor de licenças: " . $connectionmysql_ext->connect_error);
            }

            // In the license validation section, replace the error handling (around line 100)
            if ($result_licenca->num_rows === 0) {
                showLicenseError("Licença não encontrada para o CNPJ informado");
            }

            // For expired license (around line 110)
            if ($row_licenca['data_expiracao'] < $data_atual) {
                showLicenseError("Sua licença expirou em " . date('d/m/Y', strtotime($row_licenca['data_expiracao'])));
            }

            // Licença não encontrada
            session_unset(); // Remove todas as variáveis de sessão
            session_destroy(); // Destroi a sessão
            header("Location: ../login.php?status=erro&message=Licença não encontrada");
            exit();
        }
    }

    // Redireciona para a página inicial
    header("Location: ../index.php?status=sucesso");
    exit();
} else {
    // Usuário não encontrado. Você pode redirecionar de volta ao login ou mostrar uma mensagem de erro.
    session_unset(); // Remove todas as variáveis de sessão
    session_destroy(); // Destroi a sessão
    header("Location: ../login.php?status=erro&message=Usuário não localizado na base de dados");
    exit();
}
