<?php
// =================================================================
// 1. CONFIGURACIÓN INICIAL Y DE ENTORNO
// =================================================================

// Incluye archivos de seguridad o de configuración global primero.
include_once 'files/guardiankey.php'; 
include_once 'db/db_connection.php'; // Conexión a la BD (solo una vez).

// Inicia la sesión para poder acceder a $_SESSION['user_id'].
session_start();

// Configuración recomendada para manejo de errores en producción.
ini_set('display_errors', 0); // No mostrar errores al usuario final.
ini_set('log_errors', 1); // Guardar errores en un archivo.
ini_set('error_log', __DIR__ . '/../logs/php_errors.log'); // Ruta del archivo de log.
error_reporting(E_ALL);

// =================================================================
// 2. VALORES POR DEFECTO
// =================================================================
// Definimos los datos que se usarán si algo falla o el usuario no está logueado.

$businessName     = "Nombre Del Negocio";
$userFullName     = "Nombre De Usuario";
$userEmail        = "";
$userProfilePhoto = "https://placehold.co/96x96/cccccc/333333?text=U";

// =================================================================
// 3. OBTENER DATOS DE LA BASE DE DATOS
// =================================================================
// Un solo bloque try-catch para todas las consultas a la base de datos.

try {
    // --- Consulta #1: Obtener el nombre del negocio (UNA SOLA VEZ) ---
    // La variable $pdo viene del archivo db_connection.php.
    // <-- ¡CAMBIO REALIZADO AQUÍ! Se cambió 'website_config' por 'business_info'.
    $stmt_business = $pdo->query("SELECT company_name FROM business_info WHERE id = 1");
    $business_data = $stmt_business->fetch(PDO::FETCH_ASSOC);
    
    // Si se encontró la configuración, actualizamos la variable.
    if ($business_data && !empty($business_data['company_name'])) {
        $businessName = $business_data['company_name'];
    }

    // --- Consulta #2: Obtener datos del usuario si ha iniciado sesión ---
    if (isset($_SESSION['user_id'])) {
        // Usamos el `user_id` de la tabla `users`, no el `id` autoincremental, para mayor consistencia.
        $stmt_user = $pdo->prepare("SELECT full_name, email, profile_photo_url FROM users WHERE user_id = ?");
        $stmt_user->execute([$_SESSION['user_id']]);
        $user_data = $stmt_user->fetch(PDO::FETCH_ASSOC);

        // Si se encontraron datos del usuario, actualizamos las variables.
        if ($user_data) {
            $userFullName = $user_data['full_name'] ?? $userFullName;
            $userEmail    = $user_data['email'] ?? $userEmail;
            if (!empty($user_data['profile_photo_url'])) {
                $userProfilePhoto = $user_data['profile_photo_url'];
            }
        }
    }
} catch (PDOException $e) {
    // Si ocurre un error con la base de datos, lo registramos en el log.
    // Las variables mantendrán sus valores por defecto, por lo que la página no se romperá.
    error_log("Error de Base de Datos al cargar datos del perfil: " . $e->getMessage());
}

// =================================================================
// 4. PREPARAR VARIABLES PARA MOSTRAR EN HTML (SEGURIDAD)
// =================================================================
// Usamos htmlspecialchars() para prevenir ataques XSS.

$businessName     = htmlspecialchars($businessName);
$userFullName     = htmlspecialchars($userFullName);
$userProfilePhoto = htmlspecialchars($userProfilePhoto);

/*
 * ============================================
 * CONFIGURACIÓN DE ZONA HORARIA GLOBAL (DESDE LA BD)
 * ============================================
 */

try {
    // 1. Consultar la zona horaria desde la base de datos
    $stmt_tz = $pdo->query("SELECT timezone FROM business_info WHERE id = 1 LIMIT 1");
    $business_info = $stmt_tz->fetch(PDO::FETCH_ASSOC);

    // 2. Determinar la zona horaria a usar
    // Si se encuentra en la BD, se usa. Si no, se usa 'UTC' como fallback.
    $app_timezone = ($business_info && !empty($business_info['timezone'])) ? $business_info['timezone'] : 'UTC';

    // 3. Establecer la zona horaria para PHP
    date_default_timezone_set($app_timezone);

    // 4. Establecer la zona horaria para la CONEXIÓN de MySQL
    // Se usa prepare() para más seguridad
    $stmt_set_tz = $pdo->prepare("SET time_zone = ?");
    $stmt_set_tz->execute([$app_timezone]);

} catch (PDOException $e) {
    // Si todo falla, usar UTC y registrar el error
    date_default_timezone_set('UTC');
    error_log('Error crítico al configurar la zona horaria desde la BD: ' . $e->getMessage());
}

/*
 * ============================================
 * FIN DE CONFIGURACIÓN DE ZONA HORARIA
 * ============================================
 */

?>

<div class="pt-6 pb-4 text-center px-4">
    <div class="relative inline-block">
        <img class="w-16 h-16 md:w-24 md:h-24 rounded-full mx-auto ring-4 ring-[var(--color-highlight)] ring-offset-2 ring-offset-[var(--color-primary)] object-cover" src="<?php echo $userProfilePhoto; ?>" alt="Avatar De Usuario">
        <span class="absolute bottom-1 right-1 block h-3.5 w-3.5 md:h-4 md:w-4 rounded-full bg-green-400 ring-2 ring-[var(--color-primary)]"></span>
    </div>
    <h3 class="font-extrabold text-base md:text-lg mt-3 leading-tight"><?php echo $userFullName; ?></h3>
    <p class="text-xs md:text-sm text-white/70"><?php echo $businessName; ?></p>
</div>

<div class="px-6 py-2">
    <div class="border-t border-white/10"></div>
</div>