<?php
session_start();
require_once 'conexao.php';

// Inclui PHPMailer diretamente (sem Composer)
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
require 'PHPMailer/src/Exception.php';

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

$mensagem = '';
$erro = '';

// Função para gerar senha aleatória segura
function gerarSenhaAleatoria($tamanho = 12) {
    $maiusculas = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $minusculas = 'abcdefghijklmnopqrstuvwxyz';
    $numeros = '0123456789';
    $especiais = '!@#$%^&*()';
    
    $senha = '';
    $senha .= $maiusculas[rand(0, strlen($maiusculas) - 1)];
    $senha .= $minusculas[rand(0, strlen($minusculas) - 1)];
    $senha .= $numeros[rand(0, strlen($numeros) - 1)];
    $senha .= $especiais[rand(0, strlen($especiais) - 1)];
    
    $todosCaracteres = $maiusculas . $minusculas . $numeros . $especiais;
    for ($i = 0; $i < $tamanho - 4; $i++) {
        $senha .= $todosCaracteres[rand(0, strlen($todosCaracteres) - 1)];
    }
    
    return str_shuffle($senha);
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);

    if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $erro = 'Informe um e-mail válido.';
    } else {
        // Verifica se o e-mail existe na tabela usuarios
        $stmt = $conn->prepare("SELECT id, nome FROM usuarios WHERE email = ? AND ativo = 'sim'");
        $stmt->bind_param("s", $email);
        $stmt->execute();
        $resultado = $stmt->get_result();

        if ($resultado->num_rows === 1) {
            $usuario = $resultado->fetch_assoc();
            $nome_usuario = $usuario['nome'];
            
            // Gera uma nova senha aleatória
            $nova_senha = gerarSenhaAleatoria();
            $senha_hash = password_hash($nova_senha, PASSWORD_DEFAULT);
            
            // Atualiza a senha no banco de dados
            $update = $conn->prepare("UPDATE usuarios SET senha = ? WHERE email = ?");
            $update->bind_param("ss", $senha_hash, $email);
            $update_sucesso = $update->execute();
            $update->close();
            
            if ($update_sucesso) {
                // Envia e-mail com a nova senha
                $mail = new PHPMailer(true);

                try {
                    // Configurações do servidor SMTP
                    $mail->isSMTP();
                    $mail->Host = 'ns242.hostgator.com.br'; // Use o host correto
                    $mail->SMTPAuth = true;
                    $mail->Username = 'recuperacao@son.tvitecnologia.com.br';
                    $mail->Password = 'Gabrielito@1'; // Confirme esta senha
                    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
                    $mail->Port = 587;
                    $mail->CharSet = 'UTF-8';
                    $mail->SMTPDebug = 0; // Alterar para 2 para ver logs detalhados

                    // Remetente e destinatário
                    $mail->setFrom('recuperacao@son.tvitecnologia.com.br', 'SON TVi Tecnologia');
                    $mail->addAddress($email, $nome_usuario);
                    $mail->addReplyTo('suporte@son.tvitecnologia.com.br', 'Suporte');

                    // Conteúdo do e-mail
                    $mail->isHTML(true);
                    $mail->Subject = 'Nova senha de acesso - SON TVi Tecnologia';
                    
                    $mail->Body = "
                        <html>
                        <head>
                            <meta charset='UTF-8'>
                            <style>
                                body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }
                                .container { max-width: 600px; margin: 0 auto; padding: 20px; }
                                .senha { 
                                    background-color: #f4f4f4; 
                                    padding: 10px; 
                                    border-radius: 5px; 
                                    font-family: monospace;
                                    font-size: 18px;
                                    letter-spacing: 2px;
                                    text-align: center;
                                    margin: 20px 0;
                                }
                                .info { color: #666; font-size: 0.9em; }
                                .btn { 
                                    display: inline-block; 
                                    padding: 10px 20px; 
                                    background-color: #3498db; 
                                    color: white !important; 
                                    text-decoration: none; 
                                    border-radius: 5px;
                                }
                            </style>
                        </head>
                        <body>
                            <div class='container'>
                                <h2>Redefinição de Senha</h2>
                                <p>Olá {$nome_usuario},</p>
                                <p>Foi gerada uma nova senha para sua conta:</p>
                                <div class='senha'>{$nova_senha}</div>
                                <p>Por segurança, recomendamos que:</p>
                                <ol>
                                    <li>Acesse o sistema com esta senha</li>
                                    <li>Vá até as configurações de sua conta</li>
                                    <li>Altere para uma senha de sua preferência</li>
                                </ol>
                                <p class='info'>Caso não tenha solicitado esta alteração, entre em contato imediatamente com nosso suporte.</p>
                                <p>Atenciosamente,<br>Equipe SON TVi Tecnologia</p>
                            </div>
                        </body>
                        </html>
                    ";

                    $mail->AltBody = "Redefinição de Senha\n\n"
                        . "Olá {$nome_usuario},\n\n"
                        . "Foi gerada uma nova senha para sua conta: {$nova_senha}\n\n"
                        . "Por segurança, recomendamos que:\n"
                        . "1. Acesse o sistema com esta senha\n"
                        . "2. Vá até as configurações de sua conta\n"
                        . "3. Altere para uma senha de sua preferência\n\n"
                        . "Atenciosamente,\n"
                        . "Equipe SON TVi Tecnologia";

                    if ($mail->send()) {
                        $mensagem = "Uma nova senha foi enviada para {$email}. Verifique sua caixa de entrada e spam.";
                    } else {
                        throw new Exception("Falha no envio do e-mail");
                    }
                } catch (Exception $e) {
                    error_log("Erro ao enviar e-mail: " . $e->getMessage() . " - " . $mail->ErrorInfo);
                    $erro = "A nova senha foi gerada, mas ocorreu um erro ao enviar o e-mail. Por favor, entre em contato com o suporte informando seu e-mail.";
                }
            } else {
                $erro = "Ocorreu um erro ao atualizar sua senha. Por favor, tente novamente mais tarde.";
            }
        } else {
            $erro = 'E-mail não encontrado ou conta inativa.';
        }

        $stmt->close();
    }
}

$conn->close();
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Recuperar Senha - SON TVi Tecnologia</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background: #f5f5f5;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
        .box {
            background: white;
            padding: 30px;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0,0,0,.1);
            max-width: 400px;
            width: 100%;
        }
        .logo {
            text-align: center;
            margin-bottom: 20px;
        }
        .logo img {
            max-width: 150px;
        }
        h2 {
            text-align: center;
            color: #333;
            margin-top: 0;
        }
        .form-group {
            margin: 15px 0;
        }
        label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        input[type=email] {
            width: 100%;
            padding: 10px;
            border-radius: 4px;
            border: 1px solid #ccc;
            box-sizing: border-box;
        }
        button {
            width: 100%;
            padding: 12px;
            background: #3498db;
            color: white;
            border: none;
            border-radius: 4px;
            font-size: 16px;
            cursor: pointer;
            transition: background 0.3s;
        }
        button:hover {
            background: #2980b9;
        }
        .msg {
            margin: 15px 0;
            padding: 12px;
            border-radius: 4px;
            text-align: center;
        }
        .msg.success { 
            background: #d4edda; 
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        .msg.error { 
            background: #f8d7da; 
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="logo">
            <!-- Adicione aqui o logo da empresa se desejar -->
            <h2>SON TVi Tecnologia</h2>
        </div>
        <h2>Recuperar Senha</h2>

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

        <form method="POST" action="">
            <div class="form-group">
                <label for="email">E-mail cadastrado:</label>
                <input type="email" name="email" id="email" required>
            </div>
            <button type="submit">Solicitar Nova Senha</button>
        </form>
    </div>
</body>
</html>