<?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\SMTP;
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;
}

// Função para enviar e-mail
function enviarEmail($destinatario, $nome, $senha, $isSuperAdmin = false) {
    $mail = new PHPMailer(true);
    
    try {
        // Configurações do servidor SMTP
        $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;
        
        // Remetente e destinatário
        $mail->setFrom('recuperacao@son.tvitecnologia.com.br', 'Sistema de Cadastro');
        $mail->addAddress($destinatario, $nome);
        $mail->addReplyTo('suporte@son.tvitecnologia.com.br', 'Suporte');
        
        // Conteúdo do e-mail diferenciado para superadmin
        $mail->isHTML(true);
        $mail->Subject = $isSuperAdmin 
            ? 'Seu cadastro como Super Admin foi realizado' 
            : 'Seu cadastro foi realizado com sucesso';
        
        $tipoAcesso = $isSuperAdmin 
            ? "<p><strong>Tipo de acesso:</strong> <span style='color:red'>SUPER ADMINISTRADOR (acesso a todos os tenants)</span></p>"
            : "";
            
        $mail->Body = "
            <html>
            <head>
                <title>Cadastro realizado</title>
                <style>
                    body { font-family: Arial, sans-serif; line-height: 1.6; }
                    .container { max-width: 600px; margin: 0 auto; padding: 20px; }
                    .senha { background-color: #f4f4f4; padding: 10px; border-radius: 5px; font-weight: bold; }
                    .superadmin { color: red; font-weight: bold; }
                </style>
            </head>
            <body>
                <div class='container'>
                    <h2>Olá $nome,</h2>
                    <p>Seu cadastro foi realizado com sucesso!</p>
                    $tipoAcesso
                    <p>Aqui estão seus dados de acesso:</p>
                    <p><strong>E-mail:</strong> $destinatario</p>
                    <p><strong>Senha temporária:</strong> <span class='senha'>$senha</span></p>
                    <p><strong>Importante:</strong> Recomendamos que altere esta senha após o primeiro login.</p>
                    <p>Atenciosamente,<br>Equipe Tvitec</p>
                </div>
            </body>
            </html>
        ";
        
        $mail->send();
        return true;
    } catch (Exception $e) {
        error_log("Erro ao enviar e-mail: " . $mail->ErrorInfo);
        return false;
    }
}

// Processamento do formulário
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $gerarSenhaAutomatica = isset($_POST['gerar_senha_automatica']);
    $isSuperAdmin = isset($_POST['is_super_admin']);
    
    $nome_empresa = trim($_POST['nome_empresa'] ?? '');
    $nome_admin   = trim($_POST['nome_admin'] ?? '');
    $email        = filter_input(INPUT_POST, 'email_admin', FILTER_SANITIZE_EMAIL);
    
    if ($gerarSenhaAutomatica) {
        $senha = gerarSenhaAleatoria();
    } else {
        $senha = $_POST['senha_admin'] ?? '';
    }

    // Validações
    if (empty($nome_admin) || empty($email)) {
        $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 {
        // Verifica se e-mail já está em uso
        $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 {
            // Se for superadmin, não cria tenant
            if (!$isSuperAdmin && empty($nome_empresa)) {
                $erro = 'Nome da empresa é obrigatório para admin comum.';
                $stmt->close();
            } else {
                $tenant_id = null;
                
                // 1. Cadastra tenant apenas se não for superadmin
                if (!$isSuperAdmin) {
                    $stmt = $conn->prepare("INSERT INTO tenants (nome) VALUES (?)");
                    $stmt->bind_param("s", $nome_empresa);
                    if ($stmt->execute()) {
                        $tenant_id = $stmt->insert_id;
                        $stmt->close();
                    } else {
                        $erro = 'Erro ao cadastrar o tenant: ' . $stmt->error;
                        $stmt->close();
                    }
                }
                
                if (empty($erro)) {
                    // 2. Cadastra usuário (admin ou superadmin)
                    $senha_hash = password_hash($senha, PASSWORD_DEFAULT);
                    $permissao  = $isSuperAdmin ? 'superadmin' : 'admin';
                    $ativo      = 'sim';

                    $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, $isSuperAdmin);
                        
                        $msgTipo = $isSuperAdmin ? 'Super Admin' : 'Empresa e usuário admin';
                        $sucesso = $emailEnviado 
                            ? "$msgTipo cadastrados com sucesso! A senha foi enviada para o e-mail informado."
                            : "$msgTipo cadastrados com sucesso! Porém, houve um problema ao enviar o e-mail com a senha.";
                    } else {
                        $erro = 'Erro ao cadastrar o usuário: ' . $stmt->error;
                    }
                    $stmt->close();
                }
            }
        }
        $conn->close();
    }
}
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Cadastro de Empresa/Super Admin</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;
            display: block;
            margin-bottom: 5px;
        }
        input[type=text], 
        input[type=email], 
        input[type=password] {
            width: 100%;
            padding: 10px;
            border-radius: 5px;
            border: 1px solid #ccc;
            box-sizing: border-box;
        }
        .btn-submit {
            width: 100%;
            padding: 12px;
            background: #27ae60;
            color: white;
            font-weight: bold;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            font-size: 16px;
        }
        .btn-submit:hover {
            background: #2ecc71;
        }
        .msg {
            margin: 15px 0;
            padding: 10px;
            border-radius: 5px;
            text-align: center;
        }
        .msg.success { 
            background: #d4edda; 
            color: #155724; 
            border: 1px solid #c3e6cb;
        }
        .msg.error { 
            background: #f8d7da; 
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        .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;
        }
        .superadmin-option {
            margin: 15px 0;
            padding: 15px;
            background: #f8f9fa;
            border-radius: 5px;
            border: 1px solid #e9ecef;
        }
        .superadmin-option label {
            font-weight: bold;
            color: #dc3545;
            cursor: pointer;
        }
        .superadmin-option input {
            cursor: pointer;
        }
    </style>
    <script>
        function toggleFields() {
            const isSuperAdmin = document.getElementById('is_super_admin').checked;
            const empresaField = document.getElementById('empresa_field');
            
            if (isSuperAdmin) {
                empresaField.style.display = 'none';
                document.getElementById('nome_empresa').value = '';
            } else {
                empresaField.style.display = 'block';
            }
            
            toggleSenhaField();
        }
        
        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);
                document.getElementById('senha_admin').value = '';
            } else {
                senhaField.style.display = 'block';
                senhaGeradaDiv.style.display = 'none';
            }
        }
        
        // Inicializa os campos quando a página carrega
        document.addEventListener('DOMContentLoaded', function() {
            toggleFields();
            toggleSenhaField();
        });
    </script>
</head>
<body>
    <div class="form-container">
        <h2>Cadastrar Nova Empresa ou Super Admin</h2>

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

        <form method="POST" onsubmit="return validarForm()">
            <div class="superadmin-option">
                <input type="checkbox" name="is_super_admin" id="is_super_admin" onchange="toggleFields()">
                <label for="is_super_admin">Cadastrar como Super Administrador (acesso a todos os tenants)</label>
            </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="form-group">
                <label for="nome_admin">Nome Completo:</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="checkbox-group">
                <input type="checkbox" name="gerar_senha_automatica" id="gerar_senha_automatica" onchange="toggleSenhaField()">
                <label for="gerar_senha_automatica">Gerar senha automaticamente e enviar por e-mail</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>
    
    <script>
        function validarForm() {
            const isSuperAdmin = document.getElementById('is_super_admin').checked;
            const nomeEmpresa = document.getElementById('nome_empresa').value;
            const senha = document.getElementById('senha_admin').value;
            const gerarSenha = document.getElementById('gerar_senha_automatica').checked;
            
            if (!isSuperAdmin && nomeEmpresa.trim() === '') {
                alert('Nome da empresa é obrigatório para admin comum');
                return false;
            }
            
            if (!gerarSenha && senha.length < 8) {
                alert('A senha deve ter pelo menos 8 caracteres');
                return false;
            }
            
            return true;
        }
    </script>
</body>
</html>