<?php
/**
 * TechShop Perú - Panel Admin Aislado: Gestión de Pedidos y Exportación a CSV
 */
define('SECURE_ACCESS', true);
require_once __DIR__ . '/../includes/config.php';
require_once __DIR__ . '/../includes/database.php';
require_once __DIR__ . '/../includes/functions.php';

require_admin();
$db = db();

if (isset($_GET['export']) && $_GET['export'] === 'csv') {
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=pedidos_techshop_' . date('Ymd_His') . '.csv');
    
    $output = fopen('php://output', 'w');
    fprintf($output, chr(0xEF).chr(0xBB).chr(0xBF));
    
    fputcsv($output, ['ID Pedido', 'Cliente', 'Telefono', 'Comprobante', 'Documento', 'Razon Social', 'Metodo Pago', 'Subtotal', 'Descuento', 'Envio', 'Total', 'Estado', 'Fecha']);
    
    $stmtExp = $db->query('
        SELECT p.*, u.nombres, u.apellidos, u.telefono 
        FROM pedidos p 
        JOIN usuarios u ON p.usuario_id = u.id 
        ORDER BY p.fecha_pedido DESC
    ');
    
    while ($row = $stmtExp->fetch()) {
        fputcsv($output, [
            $row['numero_pedido'],
            $row['nombres'] . ' ' . $row['apellidos'],
            $row['telefono'] ?? 'N/A',
            strtoupper($row['tipo_comprobante']),
            $row['num_documento'] ?? 'N/A',
            $row['razon_social'] ?? 'N/A',
            strtoupper(str_replace('_', ' ', $row['metodo_pago'])),
            $row['subtotal'],
            $row['descuento'],
            $row['envio'],
            $row['total'],
            ucfirst($row['estado']),
            $row['fecha_pedido']
        ]);
    }
    fclose($output);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (!csrf_verify()) {
        set_flash('error', 'Token inválido.');
    } else {
        $pedido_id = (int)($_POST['pedido_id'] ?? 0);
        $estado = in_array($_POST['estado'] ?? '', ['pendiente','confirmado','enviado','entregado','cancelado'], true) ? $_POST['estado'] : 'pendiente';

        // Registrar historial del cambio de estado (tabla historial_pedidos)
        $stmtAnt = $db->prepare('SELECT estado FROM pedidos WHERE id = ?');
        $stmtAnt->execute([$pedido_id]);
        $estado_anterior = (string) ($stmtAnt->fetchColumn() ?: '');

        $stmt = $db->prepare('UPDATE pedidos SET estado = ? WHERE id = ?');
        $stmt->execute([$estado, $pedido_id]);

        if ($estado_anterior === '') {
            set_flash('error', 'El pedido no existe.');
        } else {
            if ($estado_anterior !== $estado) {
                $db->prepare('INSERT INTO historial_pedidos (pedido_id, estado_anterior, estado_nuevo, usuario_id) VALUES (?, ?, ?, ?)')
                    ->execute([$pedido_id, $estado_anterior, $estado, $_SESSION['usuario_id'] ?? null]);
                audit_log('order_status_update', 'pedidos', $pedido_id, ['anterior' => $estado_anterior, 'nuevo' => $estado]);
            }
            set_flash('success', 'Estado del pedido actualizado.');
        }
    }
    csrf_regenerate();
    redirect('panel-admin-tech/pedidos.php');
}

$stmt = $db->query('
    SELECT p.*, u.nombres, u.apellidos, u.telefono 
    FROM pedidos p 
    JOIN usuarios u ON p.usuario_id = u.id 
    ORDER BY p.fecha_pedido DESC
');
$pedidos = $stmt->fetchAll();

$page_title = 'Gestión de Pedidos';
require_once __DIR__ . '/views/layout.php';
?>

<div class="d-flex justify-content-between align-items-center mb-3">
    <h5 class="fw-bold mb-0">Listado de Pedidos</h5>
    <a href="<?= url('panel-admin-tech/pedidos.php?export=csv') ?>" class="btn btn-success btn-sm">
        <i class="bi bi-file-earmark-excel me-1"></i>Exportar a Excel / CSV
    </a>
</div>

<div class="table-responsive bg-white rounded shadow-sm p-3">
  <table class="table table-hover align-middle mb-0">
    <thead class="table-light">
      <tr>
        <th>N° Pedido</th>
        <th>Cliente</th>
        <th>Comprobante</th>
        <th>Pago</th>
        <th>Voucher</th>
        <th>Total</th>
        <th>Estado</th>
        <th>Acción</th>
      </tr>
    </thead>
    <tbody>
      <?php if (empty($pedidos)): ?>
      <tr><td colspan="8" class="text-center text-muted py-4">No existen pedidos registrados.</td></tr>
      <?php else: ?>
      <?php foreach ($pedidos as $p): ?>
      <tr>
        <td class="fw-bold">#<?= e($p['numero_pedido']) ?></td>
        <td>
            <div class="fw-medium"><?= e($p['nombres'] . ' ' . $p['apellidos']) ?></div>
            <?php if (!empty($p['telefono'])): ?>
                <?php $wspLink = "https://wa.me/" . preg_replace('/[^0-9]/', '', $p['telefono']) . "?text=" . urlencode("Hola " . $p['nombres'] . ", te saludamos de TechShop Perú respecto a tu pedido #" . $p['numero_pedido']); ?>
                <a href="<?= $wspLink ?>" target="_blank" class="text-success text-decoration-none small"><i class="bi bi-whatsapp me-1"></i><?= e($p['telefono']) ?></a>
            <?php endif; ?>
        </td>
        <td>
            <span class="badge bg-secondary"><?= strtoupper(e($p['tipo_comprobante'])) ?></span>
            <small class="d-block text-muted"><?= e($p['num_documento']) ?></small>
            <?php if (!empty($p['razon_social'])): ?>
                <small class="d-block text-muted"><?= e($p['razon_social']) ?></small>
            <?php endif; ?>
        </td>
        <td>
            <span class="badge bg-info text-dark"><?= strtoupper(str_replace('_', ' ', e($p['metodo_pago']))) ?></span>
            <?php if (!empty($p['cupon_codigo'])): ?>
                <small class="d-block text-success fw-bold">Cupón: <?= e($p['cupon_codigo']) ?></small>
            <?php endif; ?>
        </td>
        <td>
            <?php if (!empty($p['voucher_imagen'])): ?>
                <a href="<?= UPLOADS_URL . '/vouchers/' . e($p['voucher_imagen']) ?>" target="_blank" class="btn btn-sm btn-outline-primary">
                    <i class="bi bi-image me-1"></i>Ver Voucher
                </a>
            <?php else: ?>
                <span class="text-muted small">Sin adjunto</span>
            <?php endif; ?>
        </td>
        <td class="fw-bold text-primary"><?= format_precio((float)$p['total']) ?></td>
        <td>
            <?php
            $badgeColor = match($p['estado']) {
                'confirmado' => 'bg-info',
                'enviado' => 'bg-primary',
                'entregado' => 'bg-success',
                'cancelado' => 'bg-danger',
                default => 'bg-warning text-dark'
            };
            ?>
            <span class="badge <?= $badgeColor ?>"><?= ucfirst(e($p['estado'])) ?></span>
        </td>
        <td>
          <form method="POST" class="d-flex gap-2 align-items-center">
            <?= csrf_field() ?>
            <input type="hidden" name="pedido_id" value="<?= (int)$p['id'] ?>">
            <select name="estado" class="form-select form-select-sm" style="width:auto;">
              <option value="pendiente" <?= $p['estado'] === 'pendiente' ? 'selected' : '' ?>>Pendiente</option>
              <option value="confirmado" <?= $p['estado'] === 'confirmado' ? 'selected' : '' ?>>Confirmado</option>
              <option value="enviado" <?= $p['estado'] === 'enviado' ? 'selected' : '' ?>>Enviado</option>
              <option value="entregado" <?= $p['estado'] === 'entregado' ? 'selected' : '' ?>>Entregado</option>
              <option value="cancelado" <?= $p['estado'] === 'cancelado' ? 'selected' : '' ?>>Cancelado</option>
            </select>
            <button type="submit" class="btn btn-sm btn-primary">Guardar</button>
          </form>
        </td>
      </tr>
      <?php endforeach; ?>
      <?php endif; ?>
    </tbody>
  </table>
</div>
