<?php
// المسار: admin/order_view.php
// عرض تفاصيل طلب للإدارة مع واجهة حديثة + إمكانية تحديث حالة الطلب

declare(strict_types=1);

// جلسة + تفويض
if (session_status() !== PHP_SESSION_ACTIVE) {
  ini_set('session.use_strict_mode', '1');
  session_start();
}
if (empty($_SESSION['admin'])) {
  header('Location: login.php');
  exit;
}

// اتصالات أساسية
require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/functions.php';
$config = require __DIR__ . '/../config.php';
$base   = rtrim($config['base_url'] ?? '', '/');

// دوال مساعدة
if (!function_exists('e')) {
  function e($v){ return htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8'); }
}
if (!function_exists('asset_url')) {
  function asset_url(string $path): string {
    global $base;
    $path = trim($path);
    if ($path==='') return '';
    if (preg_match('~^https?://~i',$path)) return $path;
    if (str_starts_with($path,'/uploads/')) return $base . '/public' . $path;
    if (str_starts_with($path,'/public/'))  return $base . $path;
    if ($path[0]==='/') return $base . $path;
    return $base . '/' . ltrim($path,'/');
  }
}
if (!function_exists('price')) {
  function price(float $v): string {
    global $config;
    $baseCurrency = $config['currency_code'] ?? 'JOD';
    $selected = $_SESSION['currency'] ?? $baseCurrency;
    $rates   = $config['currency_rates']   ?? [$baseCurrency=>1];
    $symbols = $config['currency_symbols'] ?? [$baseCurrency=>($config['currency_symbol'] ?? 'د.أ')];
    $rate = $rates[$selected] ?? 1;
    $converted = $v * $rate;
    $amount = number_format($converted, 2);
    $symbol = $symbols[$selected] ?? $selected;
    $pos = $config['currency_position'] ?? 'after';
    return $pos==='after' ? "$amount $symbol" : "$symbol $amount";
  }
}

// قراءة معرّف الطلب
$orderId = (int)($_GET['id'] ?? 0);
if ($orderId <= 0) {
  http_response_code(404);
  echo 'رقم طلب غير صالح.';
  exit;
}

// جلب بيانات الطلب + العميل
$order = null;
try {
  $sql = "SELECT o.*,
                 c.name    AS customer_name,
                 c.phone   AS customer_phone,
                 c.address AS customer_address
          FROM orders o
          LEFT JOIN customers c ON c.id = o.customer_id
          WHERE o.id = :id
          LIMIT 1";
  $st = $pdo->prepare($sql);
  $st->execute([':id'=>$orderId]);
  $order = $st->fetch(PDO::FETCH_ASSOC);
} catch (Throwable $e) {
  $order = null;
}
if (!$order) {
  http_response_code(404);
  echo 'الطلب غير موجود.';
  exit;
}

// جلب بنود الطلب + أسماء/صور المنتجات
$items = [];
try {
  $sti = $pdo->prepare("
    SELECT oi.*, p.name AS product_name, p.main_image
    FROM order_items oi
    LEFT JOIN products p ON p.id = oi.product_id
    WHERE oi.order_id = :oid
    ORDER BY oi.id
  ");
  $sti->execute([':oid'=>$orderId]);
  $items = $sti->fetchAll(PDO::FETCH_ASSOC);
} catch (Throwable $e) {
  $items = [];
}

// حساب إجمالي محسوب للتحقق
$computedTotal = 0.0;
foreach ($items as $it) {
  $computedTotal += ((float)($it['price'] ?? 0)) * ((int)($it['qty'] ?? 0));
}
$storedTotal = (float)($order['total'] ?? 0);
$totalMismatchNote = (abs($computedTotal - $storedTotal) > 0.01)
  ? "تنبيه: الإجمالي المخزن (".price($storedTotal).") يختلف عن المحسوب (".price($computedTotal).")."
  : '';

// محاولة قراءة حقول الدفع إن وُجدت دون افتراضها
$payment_method  = $order['payment_method']  ?? null;
$payment_status  = $order['payment_status']  ?? null;
$gateway         = $order['gateway']         ?? null;
$transaction_id  = $order['transaction_id']  ?? null;

// payment_meta قد لا يوجد أو ليس JSON
$payment_meta = [];
if (!empty($order['payment_meta'])) {
  $decoded = json_decode((string)$order['payment_meta'], true);
  if (is_array($decoded)) { $payment_meta = $decoded; }
}

// آخر طلبات للعميل (اختياري)
$recentOrders = [];
if (!empty($order['customer_id'])) {
  try {
    $rs = $pdo->prepare("SELECT id,total,status,created_at FROM orders
                         WHERE customer_id=:cid AND id<>:cur ORDER BY id DESC LIMIT 5");
    $rs->execute([':cid'=>$order['customer_id'], ':cur'=>$orderId]);
    $recentOrders = $rs->fetchAll(PDO::FETCH_ASSOC);
  } catch (Throwable $e) { /* تجاهل */ }
}

// تجهيز قيم عرض لحالة الدفع/الطلب مع ألوان (كما في orders.php)
$ps = (string)($payment_status ?? 'pending');
$payClass = 'bg-warning text-dark';
if ($ps === 'paid') {
  $payClass = 'bg-success';
} elseif ($ps === 'failed') {
  $payClass = 'bg-danger';
} elseif (in_array($ps, ['awaiting_transfer','initiated'], true)) {
  $payClass = 'bg-info text-dark';
}

$statusVal = (string)($order['status'] ?? 'new');
$statusClass = 'bg-secondary';
switch ($statusVal) {
  case 'completed':        $statusClass = 'bg-success'; break;
  case 'shipped':          $statusClass = 'bg-info text-dark'; break;
  case 'cancelled':        $statusClass = 'bg-danger'; break;
  case 'processing':       $statusClass = 'bg-primary'; break;
  case 'waiting_payment':  $statusClass = 'bg-warning text-dark'; break;
  case 'new':              $statusClass = 'bg-secondary'; break;
}

// ترجمة طريقة الدفع
$methodLabel = $payment_method ?? '';
if     ($methodLabel === 'cod')  $methodLabel = 'الدفع عند التوصيل';
elseif ($methodLabel === 'cliq') $methodLabel = 'تحويل كليك';
elseif ($methodLabel === 'card') $methodLabel = 'بطاقة (فيزا / ماستر)';
?>
<!doctype html>
<html lang="ar" dir="rtl">
<head>
  <meta charset="utf-8">
  <title>لوحة الإدارة - الطلب #<?= (int)$orderId ?></title>
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.rtl.min.css" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" rel="stylesheet">

  <style>
    body{
      background:#f4f6fb;
      font-family:'Cairo', system-ui, -apple-system, 'Segoe UI', sans-serif;
    }
    .wrap{
      max-width:1100px;
      margin:24px auto;
    }
    .page-header{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:.75rem;
      flex-wrap:wrap;
      margin-bottom:1rem;
    }
    .page-title{
      margin:0;
      display:flex;
      align-items:center;
      gap:.5rem;
      font-weight:900;
      font-size:1.2rem;
    }
    .page-title-icon{
      width:36px;height:36px;
      border-radius:50%;
      display:grid;place-items:center;
      background:rgba(13,110,253,.08);
      color:#0d6efd;
    }
    .page-sub{
      margin:0;
      color:#64748b;
      font-size:.85rem;
    }

    .card-soft{
      background:#fff;
      border:1px solid #e5e7eb;
      border-radius:16px;
      box-shadow:0 4px 16px rgba(15,23,42,.06);
      padding:1rem 1.2rem;
    }

    .badge-pay,
    .badge-status{
      font-size:.75rem;
      padding:.28rem .55rem;
      border-radius:999px;
      font-weight:800;
    }
    .status-pill{
      display:inline-flex;
      align-items:center;
      gap:.3rem;
    }
    .status-dot{
      width:8px;height:8px;
      border-radius:50%;
      background:currentColor;
    }

    .table-items th,
    .table-items td{
      vertical-align:middle;
      font-size:.82rem;
    }

    .xsmall{
      font-size:.72rem;
    }
  </style>
</head>
<body>
<div class="wrap">

  <?php if (isset($_GET['updated'])): ?>
    <?php if ($_GET['updated'] === '1'): ?>
      <div class="alert alert-success py-2 px-3 small">
        تم تحديث حالة الطلب بنجاح.
      </div>
    <?php else: ?>
      <div class="alert alert-danger py-2 px-3 small">
        تعذر تحديث حالة الطلب، يرجى المحاولة لاحقًا.
      </div>
    <?php endif; ?>
  <?php endif; ?>

  <!-- Header -->
  <div class="page-header">
    <div>
      <h1 class="page-title">
        <span class="page-title-icon"><i class="bi bi-receipt"></i></span>
        <span>تفاصيل الطلب #<?= (int)$orderId ?></span>
      </h1>
      <p class="page-sub">
        عرض معلومات العميل، بنود الطلب، وحالة الدفع لهذا الطلب.
      </p>
    </div>

    <div class="d-flex flex-wrap gap-2 align-items-center">

      <!-- نموذج تغيير حالة الطلب -->
      <form method="post" action="order_update_status.php" class="d-flex flex-wrap gap-2 align-items-center">
        <input type="hidden" name="order_id" value="<?= (int)$orderId ?>">
        <?php if (function_exists('csrf_token')): ?>
          <input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>">
        <?php endif; ?>

        <div class="d-flex align-items-center gap-1">
          <label for="new_status" class="small text-muted mb-0">حالة الطلب:</label>
          <select name="new_status" id="new_status" class="form-select form-select-sm" style="width:auto;min-width:150px;">
            <option value="new"             <?= $statusVal==='new'?'selected':'' ?>>جديد</option>
            <option value="waiting_payment" <?= $statusVal==='waiting_payment'?'selected':'' ?>>بانتظار الدفع</option>
            <option value="processing"      <?= $statusVal==='processing'?'selected':'' ?>>قيد المعالجة</option>
            <option value="shipped"         <?= $statusVal==='shipped'?'selected':'' ?>>تم الشحن</option>
            <option value="completed"       <?= $statusVal==='completed'?'selected':'' ?>>مكتمل</option>
            <option value="cancelled"       <?= $statusVal==='cancelled'?'selected':'' ?>>ملغى</option>
          </select>
        </div>

        <button class="btn btn-primary btn-sm rounded-pill" type="submit">
          <i class="bi bi-arrow-repeat"></i> تحديث الحالة
        </button>
      </form>

      <!-- أزرار أخرى -->
      <a href="orders.php" class="btn btn-outline-secondary btn-sm rounded-pill">
        <i class="bi bi-list"></i> كل الطلبات
      </a>
      <a href="<?= $base ?>/public/order_view.php?id=<?= (int)$orderId ?>"
         target="_blank"
         class="btn btn-outline-primary btn-sm rounded-pill">
        <i class="bi bi-box-arrow-up-right"></i> عرض كعميل
      </a>
      <button class="btn btn-success btn-sm rounded-pill" onclick="window.print()">
        <i class="bi bi-printer"></i> طباعة
      </button>
    </div>
  </div>

  <!-- بيانات عامة -->
  <div class="card-soft mb-3">
    <div class="row g-3">
      <div class="col-md-6">
        <h2 class="h6 fw-bold mb-2">بيانات العميل</h2>
        <div class="small">
          <div><strong>الاسم:</strong> <?= e($order['customer_name'] ?? '—') ?></div>
          <div><strong>الهاتف:</strong> <?= e($order['customer_phone'] ?? '—') ?></div>
          <div><strong>العنوان:</strong> <?= nl2br(e($order['customer_address'] ?? '—')) ?></div>
        </div>
      </div>
      <div class="col-md-6">
        <h2 class="h6 fw-bold mb-2">الحالة والدفع</h2>
        <div class="small mb-1">
          <strong>حالة الطلب:</strong>
          <span class="badge-status badge <?= $statusClass ?>">
            <span class="status-pill">
              <span class="status-dot"></span>
              <span><?= e($statusVal) ?></span>
            </span>
          </span>
        </div>
        <div class="small mb-1">
          <strong>تاريخ الإنشاء:</strong>
          <?= e($order['created_at'] ?? '') ?>
        </div>
        <div class="small mb-1">
          <strong>طريقة الدفع:</strong> <?= e($methodLabel ?: '—') ?>
        </div>
        <div class="small mb-1">
          <strong>حالة الدفع:</strong>
          <span class="badge-pay badge <?= $payClass ?>">
            <?= e($ps) ?>
          </span>
        </div>
        <?php if (!empty($transaction_id)): ?>
          <div class="small mb-1"><strong>رقم المعاملة:</strong> <?= e($transaction_id) ?></div>
        <?php endif; ?>
        <?php if (!empty($gateway)): ?>
          <div class="small mb-1"><strong>البوابة:</strong> <?= e($gateway) ?></div>
        <?php endif; ?>
      </div>
    </div>

    <?php if ($totalMismatchNote): ?>
      <div class="alert alert-warning mt-3 py-2 px-3 small mb-0">
        <?= e($totalMismatchNote) ?>
      </div>
    <?php endif; ?>
  </div>

  <!-- بنود الطلب -->
  <div class="card-soft mb-3">
    <h2 class="h6 fw-bold mb-3">بنود الطلب</h2>
    <?php if (!$items): ?>
      <div class="text-muted small">لا توجد بنود في هذا الطلب.</div>
    <?php else: ?>
      <div class="table-responsive">
        <table class="table table-striped align-middle table-items">
          <thead class="table-light">
            <tr>
              <th>#</th>
              <th>المنتج</th>
              <th>السعر</th>
              <th>الكمية</th>
              <th>الإجمالي</th>
            </tr>
          </thead>
          <tbody>
          <?php $n=1; foreach ($items as $it):
            $line = ((float)($it['price'] ?? 0))*((int)($it['qty'] ?? 0));
            $img  = !empty($it['main_image'])
              ? asset_url($it['main_image'])
              : 'https://via.placeholder.com/60x60?text=No+Img';
          ?>
            <tr>
              <td><?= $n++ ?></td>
              <td style="min-width:220px;">
                <div class="d-flex align-items-center gap-2">
                  <img src="<?= e($img) ?>"
                       style="width:60px;height:60px;object-fit:cover;border-radius:8px;border:1px solid #e5e7eb;"
                       alt="">
                  <div>
                    <div class="fw-semibold small">
                      <a href="<?= $base ?>/public/product.php?id=<?= (int)$it['product_id'] ?>"
                         class="text-decoration-none"
                         target="_blank">
                        <?= e($it['product_name'] ?? ('#'.(int)$it['product_id'])) ?>
                      </a>
                    </div>
                    <div class="text-muted xsmall">ID: <?= (int)$it['product_id'] ?></div>
                  </div>
                </div>
              </td>
              <td><?= price((float)($it['price'] ?? 0)) ?></td>
              <td><?= (int)($it['qty'] ?? 0) ?></td>
              <td><?= price($line) ?></td>
            </tr>
          <?php endforeach; ?>
          </tbody>
          <tfoot class="table-light">
            <tr>
              <th colspan="4" class="text-end">الإجمالي المحسوب</th>
              <th><?= price($computedTotal) ?></th>
            </tr>
            <tr>
              <th colspan="4" class="text-end">الإجمالي المسجّل في الطلب</th>
              <th><?= price($storedTotal) ?></th>
            </tr>
          </tfoot>
        </table>
      </div>
    <?php endif; ?>
  </div>

  <!-- تفاصيل إضافية -->
  <div class="row g-3">
    <div class="col-md-6">
      <div class="card-soft h-100">
        <h2 class="h6 fw-bold mb-3">تفاصيل الدفع الإضافية</h2>
        <?php if (!$payment_meta): ?>
          <div class="text-muted small">لا توجد بيانات إضافية محفوظة لهذا الطلب.</div>
        <?php else: ?>
          <ul class="small mb-0">
            <?php foreach ($payment_meta as $k=>$v): ?>
              <li>
                <strong><?= e($k) ?>:</strong>
                <?= e(is_scalar($v) ? $v : json_encode($v, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES)) ?>
              </li>
            <?php endforeach; ?>
          </ul>
        <?php endif; ?>
      </div>
    </div>

    <div class="col-md-6">
      <div class="card-soft h-100">
        <h2 class="h6 fw-bold mb-3">طلبات أخرى لنفس العميل</h2>
        <?php if (!$recentOrders): ?>
          <div class="text-muted small">لا توجد طلبات أخرى لهذا العميل.</div>
        <?php else: ?>
          <ul class="list-unstyled small mb-0">
            <?php foreach ($recentOrders as $ro): ?>
              <li class="mb-1">
                <a href="order_view.php?id=<?= (int)$ro['id'] ?>" class="text-decoration-none">
                  #<?= (int)$ro['id'] ?> — <?= price((float)$ro['total']) ?> — <?= e($ro['status'] ?? '') ?> — <?= e($ro['created_at'] ?? '') ?>
                </a>
              </li>
            <?php endforeach; ?>
          </ul>
        <?php endif; ?>
      </div>
    </div>
  </div>

  <div class="mt-3 d-flex gap-2">
    <a href="orders.php" class="btn btn-secondary rounded-pill">
      <i class="bi bi-arrow-right"></i> رجوع لقائمة الطلبات
    </a>
  </div>

</div>
</body>
</html>