<?php
// --- forgot_password.php (CON FUNCIÓN mail() DE PHP Y BRANDING) ---

if (session_status() === PHP_SESSION_NONE) { session_start(); }
include_once __DIR__ . '/db/db_connection.php'; // Asume que este archivo existe y conecta PDO

$mensaje = '';
$clase_mensaje = '';

// --- 1. OBTENER INFORMACIÓN DEL NEGOCIO (Branding) ---
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http";

$business_name = 'FlowCRM™'; // Valor por defecto
$logo_url_db = 'img/LogoFlowCRM.webp'; // Ruta por defecto para el logo

try {
    // Consultar la tabla business_info para el nombre y logo
    $stmt_info = $pdo->query("SELECT business_name, logo_url FROM business_info LIMIT 1");
    $info = $stmt_info->fetch(PDO::FETCH_ASSOC);
    
    if ($info) {
        $business_name = htmlspecialchars(trim($info['business_name']));
        if (!empty($info['logo_url'])) {
            $logo_url_db = $info['logo_url'];
        }
    }
} catch (PDOException $e) {
    // Usar valores por defecto si falla la consulta
    error_log("Error al obtener info de negocio: " . $e->getMessage());
}

// Construye la URL absoluta del logo
$logo_full_url = $protocol . "://" . $_SERVER['HTTP_HOST'] . "/" . $logo_url_db;

// --- 2. LÓGICA DE SOLICITUD DE RESTABLECIMIENTO ---
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $email = trim($_POST['email'] ?? '');

    if (empty($email)) {
        $mensaje = 'Por favor, introduce tu correo electrónico.';
        $clase_mensaje = 'bg-red-100 text-red-700';
    } else {
        try {
            // A. Verificar si el email existe
            $stmt = $pdo->prepare("SELECT id, full_name FROM users WHERE email = ?");
            $stmt->execute([$email]);
            $user = $stmt->fetch(PDO::FETCH_ASSOC);

            if ($user) {
                // B. Generar un token único y seguro
                $token = bin2hex(random_bytes(32)); 
                $expiration_time = date("Y-m-d H:i:s", time() + 3600); // 1 hora de expiración

                // C. Guardar el token y la expiración en la base de datos
                $update_stmt = $pdo->prepare("
                    UPDATE users SET reset_token = ?, reset_token_expiry = ? WHERE id = ?
                ");
                $update_stmt->execute([$token, $expiration_time, $user['id']]);

                // D. Enviar el correo electrónico con la función mail()
                $reset_link = $protocol . "://" . $_SERVER['HTTP_HOST'] . "/reset_password.php?token=" . $token;
                
                $to = $email;
                $subject = "Restablecimiento De Clave" . $business_name;

                // Headers para un correo HTML
                $headers = "MIME-Version: 1.0" . "\r\n";
                $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
                $headers .= 'From: ' . $business_name . ' <no-responder@tunegociocrm.com>' . "\r\n";
                
                // Cuerpo del correo con Barlow y branding
                $message = "
                    <html>
                    <head>
                        <style>
                            @import url('https://fonts.googleapis.com/css2?family=Barlow:wght@400;600;800&display=swap');
                        </style>
                    </head>
                    <body style='font-family: \"Barlow\", Arial, sans-serif; background-color: #f4f4f4; padding: 20px;'>
                        <div style='max-width: 600px; margin: 0 auto; background-color: #ffffff; padding: 20px; border-radius: 8px; border-top: 5px solid #9e1428; box-shadow: 0 4px 8px rgba(0,0,0,0.05);'>
                            
                            <p style='text-align: center; margin-bottom: 20px;'>
                                <img src='{$logo_full_url}' alt='Logo de {$business_name}' style='max-width: 150px; height: auto; display: block; margin: 0 auto;'>
                            </p>

                            <h2 style='color: #07162d; text-align: center; font-weight: 800; font-size: 24px; margin-top: 0;'>
                                Restablecimiento de Contraseña para <br>
                                <span style='color: #9e1428; font-weight: 800;'>{$business_name}</span>
                            </h2>
                            
                            <p style='color: #333; line-height: 1.6;'>Hola <strong>" . htmlspecialchars($user['full_name']) . "</strong>,</p>
                            <p style='color: #333; line-height: 1.6;'>Hemos recibido tu solicitud de restablecimiento de tu clave de acceso a tu Negocio Booster™. <br />Haz clic en el siguiente botón para crear una nueva contraseña. Este enlace es válido por <strong>1 hora</strong>.</p>
                            
                            <p style='text-align: center; margin: 30px 0;'>
                                <a href='{$reset_link}' style='display: inline-block; padding: 12px 25px; background-color: #9e1428; color: #ffffff; text-decoration: none; border-radius: 6px; font-weight: bold; font-size: 16px;'>
                                    Establecer Nueva Contraseña
                                </a>
                            </p>
                            
                            <p style='font-size: 12px; color: #777; border-top: 1px solid #eee; padding-top: 15px; margin-top: 30px;'>Si no solicitaste este cambio, puedes ignorar este correo.</p>
                            <p style='font-size: 12px; color: #777;'>Atentamente,<br>El equipo de {$business_name}</p>
                        </div>
                    </body>
                    </html>
                ";

                // Intenta enviar el email
                $mail_sent = mail($to, $subject, $message, $headers);
                
                if (!$mail_sent) {
                    error_log("FALLO al enviar email con mail() a: " . $email);
                }
            } 
            
            // D. Mostrar el mensaje de éxito (GENÉRICO por seguridad)
            $mensaje = 'Si el correo electrónico existe en nuestro sistema, te hemos enviado un enlace para restablecer tu contraseña.';
            $clase_mensaje = 'bg-green-100 text-green-700';

        } catch (PDOException $e) {
            error_log("Error en forgot_password.php: " . $e->getMessage());
            $mensaje = 'Error al procesar la solicitud. Inténtalo más tarde.';
            $clase_mensaje = 'bg-red-100 text-red-700';
        } catch (Exception $e) {
             error_log("Error de bytes aleatorios: " . $e->getMessage());
             $mensaje = 'Error interno de seguridad. Inténtalo más tarde.';
             $clase_mensaje = 'bg-red-100 text-red-700';
        }
    }
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>Recuperar Contraseña | FlowCRM™</title>
  <meta name="robots" content="noindex, nofollow">

  <link rel="icon" type="image/png" href="img/favicon.png">
  <link rel="apple-touch-icon" href="img/apple-touch-icon.png">

  <?php include 'files/gtm-head.php'; ?>

  <script src="https://cdn.tailwindcss.com"></script>
  <script src="https://unpkg.com/lucide@latest"></script>
  <link href="https://fonts.googleapis.com/css2?family=Barlow:wght@400;600;800;900&display=swap" rel="stylesheet">

  <style>
    body { font-family: 'Barlow', sans-serif; }
    :root{
      --color-primary:#07162d; --color-secondary:#9e1428; --color-highlight:#ffc857;
      --glass-bg: rgba(255,255,255,0.9);
    }
    input[type="checkbox"]{ accent-color: var(--color-secondary); }
    .btn-primary{ background: linear-gradient(90deg, var(--color-secondary), #b91c2a); color:#fff; }
    .btn-primary:hover{ filter: brightness(1.05); }
    a { text-decoration: none; }
    a:hover { text-decoration: none; color: var(--color-secondary); }
    .link { color: var(--color-secondary); font-weight: 600; }

    /* Floating labels */
    .fld{ position:relative; }
    .fld input{ padding-top:1.35rem; }
    .fld label{
      position:absolute; left:0.875rem; top:0.95rem;
      font-size:.95rem; color:#6b7280; transition:all .18s ease; pointer-events:none;
    }
    .fld:focus-within label,
    .fld input:not(:placeholder-shown) + label{
      top:.35rem; font-size:.75rem; color:var(--color-primary);
    }
  </style>
</head>
<body class="h-screen flex flex-col md:flex-row overflow-hidden bg-gray-50">
    
<?php include 'files/gtm-body.php'; ?>

  <aside class="hidden md:flex w-1/2 relative">
    <img src="img/BG-FlowCRM.webp" alt="Fondo Login" class="absolute inset-0 w-full h-full object-cover">
    <div class="absolute inset-0 bg-gradient-to-tr from-[#07162d]/70 via-[#07162d]/40 to-[#9e1428]/40"></div>

    <div class="relative z-10 flex flex-col justify-between w-full p-10">
      <div class="flex items-center gap-3">
        <img src="img/favicon.png" class="h-9 w-9 rounded-lg" alt="Logo">
        <span class="text-white/90 font-semibold tracking-wide">OrozDesign Multimedia</span>
      </div>

      <div class="text-white">
        <div class="flex justify-start mb-6">
          <img src="img/LogoFlowCRM.webp" alt="Logo FlowCRM" class="h-16 xl:h-20 w-auto">
        </div>
        <p class="mt-3 text-white/85 max-w-xl">
          Tu Centro de Control para Gestionar el Crecimiento de tu Negocio
        </p>
        <ul class="mt-6 grid grid-cols-1 lg:grid-cols-2 gap-3 text-white/90 max-w-2xl">
          <li class="flex items-center gap-3"><i data-lucide="users" class="w-5 h-5"></i> Gestión De Prospectos y Clientes</li>
          <li class="flex items-center gap-3"><i data-lucide="workflow" class="w-5 h-5"></i> Pipeline Visual y Seguimiento</li>
          <li class="flex items-center gap-3"><i data-lucide="calendar-clock" class="w-5 h-5"></i> Agenda, Citas y Recordatorios</li>
          <li class="flex items-center gap-3"><i data-lucide="file-text" class="w-5 h-5"></i> Cotizaciones y Finanzas</li>
        </ul>
      </div>
    </div>
  </aside>

  <main class="w-full md:w-1/2 flex items-center justify-center p-6 sm:p-10">
    <div class="w-full max-w-md">

      <header class="mb-6 text-center md:text-left">
        <h2 class="text-4xl md:text-5xl font-black leading-none uppercase">
          <span class="text-[var(--color-primary)]">RECUPERAR</span>
          <span class="text-[var(--color-secondary)]">CLAVE</span>
        </h2>
        <p class="mt-3 text-sm font-semibold tracking-wide text-gray-500">
          Introduce Tu Email Para Recibir Un Enlace De Restablecimiento
        </p>
      </header>

      <?php if (!empty($mensaje)): ?>
        <div class="mb-4 p-3 rounded <?php echo $clase_mensaje; ?> flex items-center gap-2">
          <i data-lucide="<?php echo strpos($clase_mensaje, 'red') !== false ? 'alert-triangle' : 'check-circle'; ?>" class="w-5 h-5"></i>
          <span><?php echo htmlspecialchars($mensaje); ?></span>
        </div>
      <?php endif; ?>

      <form action="/forgot_password.php" method="POST" class="space-y-5">
        <div class="fld">
          <input
            type="email" id="email" name="email" placeholder=" " required autocomplete="email" autofocus
            class="w-full peer rounded-xl border border-gray-300 bg-white/90 px-3.5 pt-5 pb-2.5 text-[15px] leading-tight outline-none transition focus:border-[var(--color-secondary)] focus:ring-2 focus:ring-[var(--color-highlight)]/50"
          />
          <label for="email">Correo Electrónico</label>
          <i data-lucide="mail" class="absolute right-3 top-3.5 w-5 h-5 text-gray-400 pointer-events-none"></i>
        </div>

        <button type="submit"
                class="btn-primary w-full inline-flex items-center justify-center gap-2 rounded-xl px-4 py-3.5 font-bold uppercase tracking-wide">
          <i data-lucide="send" class="w-5 h-5"></i>
          <span>Enviar Link De Recuperación</span>
        </button>
      </form>

      <p class="mt-6 text-center text-gray-600">
        <a href="login.php"
           class="font-bold text-[var(--color-primary)] hover:text-[var(--color-secondary)] transition-colors inline-flex items-center gap-2">
           <i data-lucide="arrow-left" class="w-4 h-4"></i> Volver Al Inicio De Sesión
        </a>
      </p>

    </div>
  </main>

  <script>
    lucide.createIcons();
  </script>
</body>
</html>