<?php
// Incluir o arquivo de conexão, assumindo que está na mesma estrutura de diretório que estava em ASP.
require '../conexao/conexao.php';

$servername = "31.170.164.207";
$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) {
    die("Conexão falhou: " . $connectionmysql_ext->connect_error);
}

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

// Inicializar variáveis
$idUsuario = '';
$ipUsuario = '';
$navegadorUsuario = '';

// 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->real_escape_string($pLogin);
    $pSenha = $connectionmysql->real_escape_string($pSenha);

    // Construir a consulta SQL para autenticar o usuário localmente
    $strSQL = "SELECT u.id_usuario, u.usuario, u.login, p.id_perfil, p.perfil 
               FROM perfil p, usuario u, perfil_usuario up
               WHERE u.id_usuario = up.id_usuario 
                 AND p.id_perfil = up.id_perfil 
                 AND u.login LIKE '{$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();

        // Definir variáveis de sessão
        $_SESSION['CodUsuario'] = $row['id_usuario'];
        $_SESSION['login'] = $row['login'];
        $_SESSION['NomeUsuario'] = $row['usuario'];
        $_SESSION['CodPerfil'] = $row['id_perfil'];
        $_SESSION['NomePerfil'] = $row['perfil'];
        $_SESSION['CONTADOR'] = 0;

        // Se houver conexão com a internet, validar a licença
        if (true /* Coloque aqui a lógica para verificar a conexão com a internet */) {
            // 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";
                    header("Location: ../login.php?status=erro");
                    exit();
                }

            } else {
                // Licença não encontrada
                $_SESSION['error_msg'] = "Licença não encontrada";
                header("Location: ../login.php?status=erro");
                exit();
            }
        }

        // Verificar quantidade de acessos simultâneos permitidos para o CNPJ
        $query_cnpj = "SELECT acessos FROM licenca WHERE cnpj = '$cnpj'";
        $result_cnpj = $connectionmysql->query($query_cnpj);
        if ($result_cnpj->num_rows > 0) {
            $row_cnpj = $result_cnpj->fetch_assoc();
            $acessos_permitidos = $row_cnpj['acessos'];

            // Verificar número de acessos simultâneos já registrados
            $query_acessos = "SELECT COUNT(*) AS num_acessos FROM controle_acesso 
                              WHERE id_do_usuario = '{$row['id_usuario']}' 
                              AND ip_do_usuario = '{$_SERVER['REMOTE_ADDR']}' 
                              AND navegador_utilizado = '{$_SERVER['HTTP_USER_AGENT']}'";
            $result_acessos = $connectionmysql->query($query_acessos);
            $row_acessos = $result_acessos->fetch_assoc();
            $num_acessos = $row_acessos['num_acessos'];

            if ($num_acessos < $acessos_permitidos) {
                // Número de acessos permitidos não foi atingido, inserir novo registro de acesso
                // Obter informações do usuário para registro na tabela controle_acesso
                $idUsuario = $row['id_usuario'];
                $ipUsuario = $_SERVER['REMOTE_ADDR'];
                $navegadorUsuario = $_SERVER['HTTP_USER_AGENT'];
                $dataHoraInicio = date('Y-m-d H:i:s');

                // Verificar se já existe um registro para o mesmo usuário, IP e navegador
                $query_verificar_acesso = "SELECT * FROM controle_acesso 
                                           WHERE id_do_usuario = '$idUsuario' 
                                           AND ip_do_usuario = '$ipUsuario' 
                                           AND navegador_utilizado = '$navegadorUsuario'";
                $result_verificar_acesso = $connectionmysql->query($query_verificar_acesso);

                if ($result_verificar_acesso->num_rows == 0) {
                    // Construir a consulta SQL para inserir dados na tabela controle_acesso
                    $strSQLControleAcesso = "INSERT INTO controle_acesso (id_do_usuario, data_hora_inicio, ip_do_usuario, navegador_utilizado) 
                                             VALUES ('$idUsuario', '$dataHoraInicio', '$ipUsuario', '$navegadorUsuario')";

                    // Executar a consulta SQL para inserir dados na tabela controle_acesso
                    $resultControleAcesso = $connectionmysql->query($strSQLControleAcesso);

                    // Verificar se a inserção foi bem-sucedida
                    if ($resultControleAcesso === TRUE) {
                        // Redireciona para a página inicial
                        header("Location: ../index.php?status=sucesso");
                        exit();
                    } else {
                        // Se houver algum erro na inserção, exiba uma mensagem de erro
                        echo "Erro ao registrar controle de acesso: " . $connectionmysql->error;
                    }
                } else {
                    // Já existe um registro para o mesmo usuário, IP e navegador
                    // Você pode exibir uma mensagem ou fazer qualquer outra ação aqui
                   // echo "Acesso já registrado para este usuário, IP e navegador.";
                   header("Location: ../index.php?status=sucesso");
                }
            } else {
                // Número máximo de acessos simultâneos foi atingido
                $_SESSION['error_msg'] = "Número máximo de acessos simultâneos atingido";
                header("Location: ../login.php?status=erro");
                exit();
            }
        } else {
            // CNPJ não encontrado na tabela de licença
            $_SESSION['error_msg'] = "CNPJ não encontrado na tabela de licença";
            header("Location: ../login.php?status=erro");
            exit();
        }
    }
}
?>
