<?php
require_once 'conexao.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
require 'PHPMailer/src/Exception.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

$erro = '';
$sucesso = '';

// Função para gerar senha aleatória
function gerarSenhaAleatoria($tamanho = 12) {
    $caracteres = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()';
    $senha = '';
    for ($i = 0; $i < $tamanho; $i++) {
        $senha .= $caracteres[rand(0, strlen($caracteres) - 1)];
    }
    return $senha;
}

// Envia e-mail com PHPMailer
function enviarEmail($destinatario, $nome, $senha) {
    $mail = new PHPMailer(true);

    try {
        $mail->isSMTP();
        $mail->Host       = 'ns242.hostgator.com.br';
        $mail->SMTPAuth   = true;
        $mail->Username   = 'moderador@son.tvitecnologia.com.br';
        $mail->Password   = 'Aa1029@#';
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail->Port       = 587;

        $mail->setFrom('recuperacao@son.tvitecnologia.com.br', 'Sistema de Cadastro');
        $mail->addAddress($destinatario, $nome);
        $mail->addReplyTo('suporte@son.tvitecnologia.com.br', 'Suporte');

        $mail->isHTML(true);
        $mail->Subject = 'Seu cadastro foi realizado com sucesso';
        $mail->Body = "
            <html><body>
            <h2>Olá $nome,</h2>
            <p>Seu cadastro foi realizado com sucesso!</p>
            <p><strong>E-mail:</strong> $destinatario</p>
            <p><strong>Senha temporária:</strong> <strong>$senha</strong></p>
            <p>Recomendamos que altere esta senha após o primeiro login.</p>
            </body></html>";
        $mail->AltBody = "Olá $nome,\n\nSeu cadastro foi realizado com sucesso!\n\nE-mail: $destinatario\nSenha: $senha\n\nRecomendamos que altere esta senha após o primeiro login.";

        $mail->send();
        return true;
    } catch (Exception $e) {
        error_log("Erro ao enviar e-mail: " . $mail->ErrorInfo);
        return false;
    }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $gerarSenhaAutomatica = isset($_POST['gerar_senha_automatica']);

    $nome_empresa = trim($_POST['nome_empresa'] ?? '');
    $nome_admin   = trim($_POST['nome_admin'] ?? '');
    $email        = filter_input(INPUT_POST, 'email_admin', FILTER_SANITIZE_EMAIL);
    $permissao    = $_POST['permissao'] ?? 'admin';

    $senha = $gerarSenhaAutomatica ? gerarSenhaAleatoria() : ($_POST['senha_admin'] ?? '');

    if (empty($nome_admin) || empty($email) || empty($permissao)) {
        $erro = 'Preencha todos os campos obrigatórios.';
    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $erro = 'E-mail inválido.';
    } elseif (!$gerarSenhaAutomatica && strlen($senha) < 8) {
        $erro = 'A senha deve ter pelo menos 8 caracteres.';
    } else {
        $stmt = $conn->prepare("SELECT id FROM usuarios WHERE email = ?");
        $stmt->bind_param("s", $email);
        $stmt->execute();
        $resultado = $stmt->get_result();

        if ($resultado->num_rows > 0) {
            $erro = 'Este e-mail já está em uso.';
        } else {
            $senha_hash = password_hash($senha, PASSWORD_DEFAULT);
            $ativo = 'sim';

            if ($permissao === 'super_admin') {
                $stmt = $conn->prepare("INSERT INTO usuarios (nome, email, senha, permissao, ativo) VALUES (?, ?, ?, ?, ?)");
                $stmt->bind_param("sssss", $nome_admin, $email, $senha_hash, $permissao, $ativo);
            } else {
                // Cadastrar empresa (tenant)
                $stmt_tenant = $conn->prepare("INSERT INTO tenants (nome) VALUES (?)");
                $stmt_tenant->bind_param("s", $nome_empresa);
                if (!$stmt_tenant->execute()) {
                    $erro = 'Erro ao cadastrar o tenant.';
                    $stmt_tenant->close();
                    return;
                }
                $tenant_id = $stmt_tenant->insert_id;
                $stmt_tenant->close();

                $stmt = $conn->prepare("INSERT INTO usuarios (nome, email, senha, permissao, ativo, tenant_id) VALUES (?, ?, ?, ?, ?, ?)");
                $stmt->bind_param("sssssi", $nome_admin, $email, $senha_hash, $permissao, $ativo, $tenant_id);
            }

            if ($stmt->execute()) {
                $emailEnviado = enviarEmail($email, $nome_admin, $senha);
                $sucesso = $emailEnviado
                    ? 'Usuário cadastrado com sucesso e e-mail enviado!'
                    : 'Usuário cadastrado, mas falha ao enviar o e-mail.';
            } else {
                $erro = 'Erro ao cadastrar usuário: ' . $stmt->error;
            }

            $stmt->close();
        }

        $conn->close();
    }
}
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Cadastro de Empresa e Usuário</title>
    <style>
        body { font-family: Arial, sans-serif; background: #f4f4f4; padding: 40px; }
        .form-container { background: white; padding: 30px; border-radius: 10px; max-width: 500px; margin: auto; box-shadow: 0 0 10px rgba(0,0,0,.1); }
        h2 { text-align: center; }
        .form-group { margin-bottom: 15px; }
        label { font-weight: bold; }
        input, select { width: 100%; padding: 10px; border-radius: 5px; border: 1px solid #ccc; }
        .btn-submit { width: 100%; padding: 12px; background: #27ae60; color: white; font-weight: bold; border: none; border-radius: 5px; }
        .msg { margin: 15px 0; padding: 10px; border-radius: 5px; text-align: center; }
        .msg.success { background: #d4edda; color: #155724; }
        .msg.error   { background: #f8d7da; color: #721c24; }
        .checkbox-group { margin: 15px 0; display: flex; align-items: center; }
        .checkbox-group input { width: auto; margin-right: 10px; }
        .senha-gerada { background: #e9ecef; padding: 10px; border-radius: 5px; margin-bottom: 15px; display: none; }
    </style>
    <script>
        function toggleSenhaField() {
            const checkbox = document.getElementById('gerar_senha_automatica');
            const senhaField = document.getElementById('senha_admin_field');
            const senhaGeradaDiv = document.getElementById('senha_gerada');
            if (checkbox.checked) {
                senhaField.style.display = 'none';
                senhaGeradaDiv.style.display = 'block';
                senhaGeradaDiv.innerHTML = '<strong>Senha que será gerada:</strong> ' + Math.random().toString(36).slice(2, 14);
            } else {
                senhaField.style.display = 'block';
                senhaGeradaDiv.style.display = 'none';
            }
        }

        function toggleEmpresaField() {
            const permissao = document.getElementById('permissao').value;
            const empresaField = document.getElementById('empresa_field');
            empresaField.style.display = (permissao === 'admin') ? 'block' : 'none';
        }
    </script>
</head>
<body>
<div class="form-container">
    <h2>Cadastrar Novo Usuário</h2>

    <?php if ($erro): ?>
        <div class="msg error"><?= htmlspecialchars($erro); ?></div>
    <?php elseif ($sucesso): ?>
        <div class="msg success"><?= htmlspecialchars($sucesso); ?></div>
    <?php endif; ?>

    <form method="POST">
        <div class="form-group">
            <label for="nome_admin">Nome do Usuário:</label>
            <input type="text" name="nome_admin" id="nome_admin" required>
        </div>

        <div class="form-group">
            <label for="email_admin">E-mail:</label>
            <input type="email" name="email_admin" id="email_admin" required>
        </div>

        <div class="form-group">
            <label for="permissao">Permissão:</label>
            <select name="permissao" id="permissao" onchange="toggleEmpresaField()" required>
                <option value="admin">Admin</option>
                <option value="super_admin">Super Admin</option>
            </select>
        </div>

        <div class="form-group" id="empresa_field">
            <label for="nome_empresa">Nome da Empresa:</label>
            <input type="text" name="nome_empresa" id="nome_empresa">
        </div>

        <div class="checkbox-group">
            <input type="checkbox" name="gerar_senha_automatica" id="gerar_senha_automatica" onchange="toggleSenhaField()">
            <label for="gerar_senha_automatica">Gerar senha automaticamente</label>
        </div>

        <div id="senha_gerada" class="senha-gerada"></div>

        <div class="form-group" id="senha_admin_field">
            <label for="senha_admin">Senha:</label>
            <input type="password" name="senha_admin" id="senha_admin" minlength="8">
        </div>

        <button type="submit" class="btn-submit">Cadastrar</button>
    </form>
</div>
</body>
</html>
