<?php
/**
 * TechShop Perú - Panel de Usuario
 * 
 * Permite al usuario gestionar su perfil, ver pedidos y favoritos.
 * Requiere autenticación.
 * 
 * @package TechShop Perú
 * @version 1.0
 */

define('SECURE_ACCESS', true);
require_once __DIR__ . '/../includes/config.php';
require_once __DIR__ . '/../includes/database.php';
require_once __DIR__ . '/../includes/functions.php';

require_login();

$usuario_id = (int)($_SESSION['usuario_id'] ?? 0);
$db = db();
$tab = sanitize($_GET['tab'] ?? 'perfil');
$tab = in_array($tab, ['perfil', 'pedidos', 'favoritos'], true) ? $tab : 'perfil';

// ============================================
// ACTUALIZAR PERFIL (POST)
// ============================================
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $tab === 'perfil') {
    if (!csrf_verify()) {
        set_flash('error', 'Error de seguridad. Token CSRF inválido.');
        redirect('pages/cuenta.php?tab=perfil');
    }
    csrf_regenerate();

    $errores = [];
    $nombres = sanitize($_POST['nombres'] ?? '');
    $apellidos = sanitize($_POST['apellidos'] ?? '');
    $telefono = sanitize($_POST['telefono'] ?? '');
    $direccion = sanitize($_POST['direccion'] ?? '');
    $ciudad = sanitize($_POST['ciudad'] ?? '');
    $departamento = sanitize($_POST['departamento'] ?? '');

    if (empty($nombres)) $errores[] = 'El nombre es obligatorio.';
    if (empty($apellidos)) $errores[] = 'Los apellidos son obligatorios.';
    if (strlen($nombres) > 100) $errores[] = 'El nombre no debe exceder 100 caracteres.';
    if (strlen($apellidos) > 100) $errores[] = 'Los apellidos no deben exceder 100 caracteres.';
    if (!empty($telefono) && strlen($telefono) > 20) $errores[] = 'El teléfono no debe exceder 20 caracteres.';

    if (empty($errores)) {
        try {
            $stmt = $db->prepare(
                'UPDATE usuarios SET nombres = ?, apellidos = ?, telefono = ?, direccion = ?, ciudad = ?, departamento = ? 
                 WHERE id = ?'
            );
            $stmt->execute([$nombres, $apellidos, $telefono, $direccion, $ciudad, $departamento, $usuario_id]);

            // Actualizar sesión
            $_SESSION['usuario_nombre'] = $nombres;

            set_flash('success', 'Perfil actualizado correctamente.');
            redirect('pages/cuenta.php?tab=perfil');
        } catch (PDOException $e) {
            $errores[] = 'Error al actualizar el perfil. Intente nuevamente.';
        }
    }

    if (!empty($errores)) {
        $error_msg = implode('<br>', array_map('e', $errores));
        set_flash('error', $error_msg);
        redirect('pages/cuenta.php?tab=perfil');
    }
}

// ============================================
// OBTENER DATOS DEL USUARIO
// ============================================
try {
    $stmt = $db->prepare('SELECT id, nombres, apellidos, email, telefono, direccion, ciudad, departamento, rol, fecha_registro FROM usuarios WHERE id = ?');
    $stmt->execute([$usuario_id]);
    $usuario = $stmt->fetch();
} catch (PDOException $e) {
    $usuario = null;
}

// ============================================
// OBTENER PEDIDOS DEL USUARIO
// ============================================
$pedidos = [];
if ($tab === 'pedidos') {
    try {
        $stmt = $db->prepare(
            'SELECT p.id, p.numero_pedido, p.fecha_pedido, p.estado, p.total, p.metodo_pago
             FROM pedidos p 
             WHERE p.usuario_id = ? 
             ORDER BY p.fecha_pedido DESC'
        );
        $stmt->execute([$usuario_id]);
        $pedidos = $stmt->fetchAll();
    } catch (PDOException $e) {
        $pedidos = [];
    }
}

// ============================================
// OBTENER FAVORITOS DEL USUARIO
// ============================================
$favoritos = [];
if ($tab === 'favoritos') {
    try {
        $stmt = $db->prepare(
            'SELECT p.*, m.nombre AS marca_nombre 
             FROM favoritos f 
             JOIN productos p ON f.producto_id = p.id 
             LEFT JOIN marcas m ON p.marca_id = m.id 
             WHERE f.usuario_id = ? AND p.activo = 1 
             ORDER BY f.id DESC'
        );
        $stmt->execute([$usuario_id]);
        $favoritos = $stmt->fetchAll();
    } catch (PDOException $e) {
        $favoritos = [];
    }
}

// Estados de pedido con clases de color
$estados_clases = [
    'pendiente'     => 'warning',
    'confirmado'    => 'info',
    'en_proceso'    => 'primary',
    'enviado'       => 'info',
    'entregado'     => 'success',
    'cancelado'     => 'danger',
];
$estados_etiquetas = [
    'pendiente'     => 'Pendiente',
    'confirmado'    => 'Confirmado',
    'en_proceso'    => 'En proceso',
    'enviado'       => 'Enviado',
    'entregado'     => 'Entregado',
    'cancelado'     => 'Cancelado',
];

$page_title = 'Mi Cuenta';
require_once __DIR__ . '/../includes/header.php';
?>

<!-- Page Header -->
<section class="page-header">
    <div class="container">
        <h1 class="mb-2">Mi Cuenta</h1>
        <nav aria-label="breadcrumb">
            <ol class="breadcrumb mb-0">
                <li class="breadcrumb-item"><a href="<?= url('') ?>">Inicio</a></li>
                <li class="breadcrumb-item active" aria-current="page">Mi Cuenta</li>
            </ol>
        </nav>
    </div>
</section>

<!-- Banner informativo de datos -->
<div class="bg-primary text-white py-2">
    <div class="container">
        <small>
            Bienvenido, <strong><?= e($usuario['nombres'] ?? 'Usuario') ?></strong> — 
            <?php if (($usuario['telefono'] ?? '') === '' && ($usuario['direccion'] ?? '') === ''): ?>
                <span class="text-warning"><i class="bi bi-exclamation-triangle me-1"></i> Completa tus datos para agilizar tus compras.</span>
            <?php else: ?>
                <span>Desde aquí puedes gestionar tu cuenta y pedidos.</span>
            <?php endif; ?>
        </small>
    </div>
</div>

<section class="cuenta-section py-5">
    <div class="container">
        <div class="row">
            <!-- Sidebar de navegación -->
            <div class="col-lg-3 mb-4 mb-lg-0">
                <div class="list-group shadow-sm rounded-3 overflow-hidden">
                    <a href="?tab=perfil" class="list-group-item list-group-item-action d-flex align-items-center gap-2 <?= $tab === 'perfil' ? 'active' : '' ?>">
                        <i class="bi bi-person-fill fs-5"></i>
                        <span>Mi Perfil</span>
                    </a>
                    <a href="?tab=pedidos" class="list-group-item list-group-item-action d-flex align-items-center gap-2 <?= $tab === 'pedidos' ? 'active' : '' ?>">
                        <i class="bi bi-box-seam-fill fs-5"></i>
                        <span>Mis Pedidos</span>
                    </a>
                    <a href="?tab=favoritos" class="list-group-item list-group-item-action d-flex align-items-center gap-2 <?= $tab === 'favoritos' ? 'active' : '' ?>">
                        <i class="bi bi-heart-fill fs-5"></i>
                        <span>Mis Favoritos</span>
                        <?php
                        try {
                            $stmt_fav_count = $db->prepare('SELECT COUNT(*) FROM favoritos WHERE usuario_id = ?');
                            $stmt_fav_count->execute([$usuario_id]);
                            $fav_count = (int)$stmt_fav_count->fetchColumn();
                            if ($fav_count > 0): ?>
                            <span class="badge bg-danger rounded-pill ms-auto"><?= $fav_count ?></span>
                            <?php endif;
                        } catch (PDOException $e) {}
                        ?>
                    </a>
                    <a href="<?= url('pages/mis-direcciones.php') ?>" class="list-group-item list-group-item-action d-flex align-items-center gap-2">
                        <i class="bi bi-geo-alt-fill fs-5"></i>
                        <span>Mis Direcciones</span>
                    </a>
                    <a href="<?= url('pages/soporte.php') ?>" class="list-group-item list-group-item-action d-flex align-items-center gap-2">
                        <i class="bi bi-headset fs-5"></i>
                        <span>Soporte</span>
                    </a>
                    <a href="<?= url('pages/logout.php') ?>" class="list-group-item list-group-item-action d-flex align-items-center gap-2 text-danger">
                        <i class="bi bi-box-arrow-right fs-5"></i>
                        <span>Cerrar Sesión</span>
                    </a>
                </div>
            </div>

            <!-- Contenido principal -->
            <div class="col-lg-9">
                <?= flash_message() ?>

                <!-- ========== TAB: PERFIL ========== -->
                <?php if ($tab === 'perfil'): ?>
                <div class="card border-0 shadow-sm rounded-3">
                    <div class="card-header bg-white border-bottom-0 pt-4 pb-0">
                        <h4 class="card-title mb-0"><i class="bi bi-person-gear me-2"></i>Mis Datos Personales</h4>
                        <p class="text-muted small mb-3">Actualiza tu información de contacto y envío.</p>
                    </div>
                    <div class="card-body pt-2">
                        <form method="POST" action="<?= url('pages/cuenta.php?tab=perfil') ?>" novalidate>
                            <?= csrf_field() ?>

                            <div class="row g-3">
                                <!-- Email (solo lectura) -->
                                <div class="col-md-6">
                                    <label for="email" class="form-label fw-medium">Email</label>
                                    <input type="email" class="form-control bg-light" id="email" value="<?= e($usuario['email'] ?? '') ?>" readonly disabled>
                                    <div class="form-text small">El email no se puede modificar.</div>
                                </div>

                                <!-- Rol (solo lectura) -->
                                <div class="col-md-6">
                                    <label class="form-label fw-medium">Rol de usuario</label>
                                    <input type="text" class="form-control bg-light text-capitalize" value="<?= e($usuario['rol'] ?? 'cliente') ?>" readonly disabled>
                                </div>

                                <!-- Nombres -->
                                <div class="col-md-6">
                                    <label for="nombres" class="form-label fw-medium">Nombres <span class="text-danger">*</span></label>
                                    <input type="text" class="form-control" id="nombres" name="nombres" 
                                           value="<?= e($usuario['nombres'] ?? '') ?>" required maxlength="100">
                                </div>

                                <!-- Apellidos -->
                                <div class="col-md-6">
                                    <label for="apellidos" class="form-label fw-medium">Apellidos <span class="text-danger">*</span></label>
                                    <input type="text" class="form-control" id="apellidos" name="apellidos" 
                                           value="<?= e($usuario['apellidos'] ?? '') ?>" required maxlength="100">
                                </div>

                                <!-- Teléfono -->
                                <div class="col-md-6">
                                    <label for="telefono" class="form-label fw-medium">Teléfono / Celular</label>
                                    <input type="text" class="form-control" id="telefono" name="telefono" 
                                           value="<?= e($usuario['telefono'] ?? '') ?>" maxlength="20" placeholder="Ej: 987654321">
                                </div>

                                <!-- Dirección -->
                                <div class="col-md-6">
                                    <label for="direccion" class="form-label fw-medium">Dirección</label>
                                    <input type="text" class="form-control" id="direccion" name="direccion" 
                                           value="<?= e($usuario['direccion'] ?? '') ?>" maxlength="255" placeholder="Ej: Av. Los Olivos 123">
                                </div>

                                <!-- Ciudad -->
                                <div class="col-md-6">
                                    <label for="ciudad" class="form-label fw-medium">Ciudad</label>
                                    <input type="text" class="form-control" id="ciudad" name="ciudad" 
                                           value="<?= e($usuario['ciudad'] ?? '') ?>" maxlength="100" placeholder="Ej: Lima">
                                </div>

                                <!-- Departamento -->
                                <div class="col-md-6">
                                    <label for="departamento" class="form-label fw-medium">Departamento</label>
                                    <select class="form-select" id="departamento" name="departamento">
                                        <option value="">Seleccionar departamento...</option>
                                        <?php
                                        $departamentos = [
                                            'Amazonas', 'Áncash', 'Apurímac', 'Arequipa', 'Ayacucho',
                                            'Cajamarca', 'Callao', 'Cusco', 'Huancavelica', 'Huánuco',
                                            'Ica', 'Junín', 'La Libertad', 'Lambayeque', 'Lima',
                                            'Loreto', 'Madre de Dios', 'Moquegua', 'Pasco', 'Piura',
                                            'Puno', 'San Martín', 'Tacna', 'Tumbes', 'Ucayali'
                                        ];
                                        foreach ($departamentos as $dep):
                                            $sel = (($usuario['departamento'] ?? '') === $dep) ? 'selected' : '';
                                            echo '<option value="' . e($dep) . '" ' . $sel . '>' . e($dep) . '</option>';
                                        endforeach;
                                        ?>
                                    </select>
                                </div>

                                <!-- Miembro desde -->
                                <div class="col-12">
                                    <hr>
                                    <p class="text-muted small mb-2">
                                        <i class="bi bi-calendar-check me-1"></i> 
                                        Miembro desde: <?= format_fecha($usuario['fecha_registro'] ?? 'now', 'd/m/Y') ?>
                                    </p>
                                </div>
                            </div>

                            <div class="mt-4">
                                <button type="submit" class="btn btn-primary px-4">
                                    <i class="bi bi-check-lg me-2"></i>Guardar Cambios
                                </button>
                                <a href="<?= url('') ?>" class="btn btn-outline-secondary ms-2">Cancelar</a>
                            </div>
                        </form>
                    </div>
                </div>
                <?php endif; ?>

                <!-- ========== TAB: PEDIDOS ========== -->
                <?php if ($tab === 'pedidos'): ?>
                <div class="card border-0 shadow-sm rounded-3">
                    <div class="card-header bg-white border-bottom-0 pt-4 pb-0">
                        <h4 class="card-title mb-0"><i class="bi bi-box-seam me-2"></i>Historial de Pedidos</h4>
                        <p class="text-muted small mb-3">Revisa el estado y detalle de tus compras.</p>
                    </div>
                    <div class="card-body pt-2">
                        <?php if (empty($pedidos)): ?>
                            <div class="empty-state text-center py-5">
                                <i class="bi bi-inbox display-1 text-muted"></i>
                                <h5 class="mt-3">No tienes pedidos aún</h5>
                                <p class="text-muted">Cuando realices una compra, aparecerá aquí.</p>
                                <a href="<?= url('pages/productos.php') ?>" class="btn btn-primary mt-2">
                                    <i class="bi bi-cart me-2"></i>Ver Productos
                                </a>
                            </div>
                        <?php else: ?>
                            <div class="table-responsive">
                                <table class="table table-hover align-middle">
                                    <thead class="table-light">
                                        <tr>
                                            <th>N° Pedido</th>
                                            <th>Fecha</th>
                                            <th>Método de Pago</th>
                                            <th>Estado</th>
                                            <th class="text-end">Total</th>
                                            <th class="text-center">Acción</th>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <?php foreach ($pedidos as $ped): 
                                            $estado_clase = $estados_clases[$ped['estado']] ?? 'secondary';
                                            $estado_etq = $estados_etiquetas[$ped['estado']] ?? ucfirst($ped['estado']);
                                        ?>
                                        <tr>
                                            <td class="fw-medium">#<?= e($ped['numero_pedido']) ?></td>
                                            <td><?= format_fecha($ped['fecha_pedido']) ?></td>
                                            <td><?= e($ped['metodo_pago'] ?? '—') ?></td>
                                            <td>
                                                <span class="badge bg-<?= $estado_clase ?> rounded-pill px-3 py-2">
                                                    <?= $estado_etq ?>
                                                </span>
                                            </td>
                                            <td class="text-end fw-bold"><?= format_precio((float)$ped['total']) ?></td>
                                            <td class="text-center">
                                                <a href="<?= url('pages/detalle-pedido.php?pedido=' . $ped['id']) ?>" 
                                                   class="btn btn-sm btn-outline-primary">
                                                    <i class="bi bi-eye me-1"></i>Ver
                                                </a>
                                            </td>
                                        </tr>
                                        <?php endforeach; ?>
                                    </tbody>
                                </table>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
                <?php endif; ?>

                <!-- ========== TAB: FAVORITOS ========== -->
                <?php if ($tab === 'favoritos'): ?>
                <div class="card border-0 shadow-sm rounded-3">
                    <div class="card-header bg-white border-bottom-0 pt-4 pb-0">
                        <h4 class="card-title mb-0"><i class="bi bi-heart me-2"></i>Mis Productos Favoritos</h4>
                        <p class="text-muted small mb-3">Productos que has guardado para revisar después.</p>
                    </div>
                    <div class="card-body pt-2">
                        <?php if (empty($favoritos)): ?>
                            <div class="empty-state text-center py-5">
                                <i class="bi bi-heartbreak display-1 text-muted"></i>
                                <h5 class="mt-3">No tienes favoritos</h5>
                                <p class="text-muted">Explora nuestro catálogo y marca productos con el corazón.</p>
                                <a href="<?= url('pages/productos.php') ?>" class="btn btn-primary mt-2">
                                    <i class="bi bi-grid me-2"></i>Explorar Productos
                                </a>
                            </div>
                        <?php else: ?>
                            <div class="row g-3">
                                <?php foreach ($favoritos as $p): ?>
                                <div class="col-sm-6 col-lg-4">
                                    <?php include __DIR__ . '/../includes/product-card.php'; ?>
                                </div>
                                <?php endforeach; ?>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
                <?php endif; ?>

            </div>
        </div>
    </div>
</section>

<?php require_once __DIR__ . '/../includes/footer.php'; ?>
