<?php
session_start();

// Configurações do banco do MKAUTH
$host = "localhost";
$user = "root";
$pass = "vertrigo";
$dbname = "mkradius";
$port = 3306;

try {
    $conn = new PDO("mysql:host=$host;port=$port;dbname=$dbname", $user, $pass);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    $conn->exec("set names utf8");
} catch(PDOException $e) {
    die("Erro na conexão: " . $e->getMessage());
}

// Guardar a página de origem para redirecionamento posterior
$origem = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

// Processar o formulário se for uma requisição POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Recebe os dados do formulário
    $nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING);
    $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
    $senha = filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_STRING);
    
    // Captura a página de origem se enviada no formulário
    $origem = filter_input(INPUT_POST, 'origem', FILTER_SANITIZE_URL);
    if (empty($origem)) {
        // Se não tiver origem, usa o HTTP_REFERER
        $origem = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
    }

    // Verifica se email já existe
    $stmt = $conn->prepare("SELECT id FROM sis_cliente WHERE email = :email OR login = :login");
    $stmt->bindParam(':email', $email);
    $stmt->bindParam(':login', $email);
    $stmt->execute();

    if($stmt->rowCount() > 0){
       $_SESSION['msg'] = "Este email já está cadastrado! Por favor use outro email.";
       header("Location: " . $_SERVER['PHP_SELF']);
       exit();
    }

    try {
        $conn->beginTransaction();
       
        // Gerar UUID único para o cliente
        $uuid_cliente = sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', 
            mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), 
            mt_rand(16384, 20479), mt_rand(32768, 49151), 
            mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));

        // Inserir cliente com campos essenciais
        $sql_cliente = "INSERT INTO sis_cliente (
            nome, email, login, senha, tipo, bloqueado, 
            plano, cli_ativado, cadastro, nome_res, responsavel,
            pessoa, venc, isento, estado, uuid_cliente
        ) VALUES (
            :nome, :email, :login, :senha, 'hotspot', 'nao',
            '100mega', 's', DATE_FORMAT(NOW(), '%d/%m/%Y'), :nome, :nome,
            'fisica', '05', 'sim', 'GO', :uuid_cliente
        )";

        $stmt = $conn->prepare($sql_cliente);
        $stmt->bindParam(':nome', $nome);
        $stmt->bindParam(':email', $email);
        $stmt->bindParam(':login', $email);
        $stmt->bindParam(':senha', $senha);
        $stmt->bindParam(':uuid_cliente', $uuid_cliente);
        $stmt->execute();
       
        // Inserção radcheck
        $stmt = $conn->prepare("INSERT INTO radcheck (username, attribute, op, value) 
                                VALUES (:username, 'Cleartext-Password', ':=', :senha)");
        $stmt->bindParam(':username', $email);
        $stmt->bindParam(':senha', $senha);
        $stmt->execute();

        // Inserção radusergroup
        $stmt = $conn->prepare("INSERT INTO radusergroup (username, groupname) 
                                VALUES (:username, '100mega')");
        $stmt->bindParam(':username', $email);
        $stmt->execute();

        $conn->commit();
       
        // Redireciona de volta para a página de origem
        if (!empty($origem)) {
            header("Location: " . $origem);
        } else {
            // Se não houver destino, volta para a página inicial
            header("Location: /");
        }
        exit();

    } catch(PDOException $e) {
        $conn->rollBack();
        $_SESSION['msg'] = "Erro ao cadastrar: " . $e->getMessage();
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    }
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cadastro de Usuário</title>
    <style>
        a,body,div,form,html,input,label,p,span {
            margin: 0;
            padding: 0;
            border: 0;
            font-family: sans-serif,Arial;
        }

        body {
            background: linear-gradient(135deg,hsla(236.6,0%,53.52%,1) 0,hsla(236.6,0%,53.52%,0) 70%),
                        linear-gradient(25deg,hsla(220.75,34.93%,26.52%,1) 10%,hsla(220.75,34.93%,26.52%,0) 80%),
                        linear-gradient(315deg,hsla(46.42,36.62%,83.92%,1) 15%,hsla(46.42,36.62%,83.92%,0) 80%),
                        linear-gradient(245deg,hsla(191.32,50.68%,56.45%,1) 100%,hsla(191.32,50.68%,56.45%,0) 70%);
            min-height: 100vh;
            display: flex;
            flex-direction: column;
        }

        .main {
            display: flex;
            flex-direction: column;
            flex: 1;
        }

        h1 {
            text-align: center;
            color: #fff;
            font-size: 24px;
            margin-bottom: 20px;
        }

        * {
            box-sizing: border-box;
            font-size: 16px;
        }

        .wrap {
            margin: auto;
            padding: 40px;
            width: 100%;
            max-width: 410px;
            animation: fadeIn 1s;
        }

        form {
            width: 100%;
            margin-bottom: 20px;
        }

        .info {
            color: #fff;
            text-align: center;
            margin-bottom: 30px;
            width: 90%;
            margin: 0 auto;
        }

        .info p {
            line-height: 1.5;
        }

        input {
            outline: 0;
            appearance: none;
        }

        input[type=password],
        input[type=text],
        input[type=email] {
            width: 100%;
            border: 1px solid rgba(255,255,255,.8);
            height: 44px;
            padding: 3px 20px;
            margin-bottom: 20px;
            border-radius: 6px;
            background-color: rgba(255,255,255,.8);
        }

        input[type=hidden] {
            display: none;
            margin: 0;
            height: 0;
        }

        input[type=submit] {
            background: #3e4d59;
            color: #fff;
            border: 0;
            cursor: pointer;
            text-align: center;
            width: 100%;
            height: 44px;
            border-radius: 6px;
            transition: background .3s ease-in-out;
        }

        input[type=submit]:hover {
            background: #33404a;
        }

        .info.alert {
            color: #da3d41;
        }

        @keyframes fadeIn {
            from { opacity: 0; }
            to { opacity: 1; }
        }
    </style>
</head>
<body>
    <div class="main">
        <div class="wrap">
            <h1>Novo Cadastro</h1>
            
            <?php
            if(isset($_SESSION['msg'])){
                echo '<p class="info alert">'.$_SESSION['msg'].'</p>';
                unset($_SESSION['msg']);
            }
            ?>
            
            <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" autocomplete="off">
                <label>
                    <input type="text" name="nome" placeholder="Nome Completo" required 
                           pattern="[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÍÏÓÔÕÖÚÇÑ ]+$" 
                           title="Digite seu nome completo (apenas letras)">
                </label>
                
                <label>
                    <input type="email" name="email" placeholder="Seu email" required>
                </label>
                
                <label>
                    <input type="password" name="senha" placeholder="Senha (sem espaços ou acentos)" required 
                           pattern="[a-zA-Z0-9]+" 
                           title="Digite sua senha (apenas letras e números, sem espaços ou caracteres especiais)">
                </label>
                
                <!-- Campo oculto para armazenar a página de origem -->
                <input type="hidden" name="origem" value="<?php echo htmlspecialchars($origem); ?>">
                
                <input type="submit" value="Cadastrar">
            </form>

            <div class="info">
                <p>Preencha todos os campos para realizar seu cadastro</p>
                <p>A senha não deve conter espaços ou acentos</p>
            </div>
        </div>
    </div>
</body>
</html>