<?php
// المسار: admin/product_edit.php
// تعديل منتج + إدارة الوسائط (صور / فيديو) + غلاف فيديو + زر منتج مميز

require_once __DIR__ . '/../includes/functions.php';
require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/upload.php';

session_start();
if (empty($_SESSION['admin'])) {
  header('Location: login.php');
  exit;
}

$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, '/');
  }
}

$id = (int)($_GET['id'] ?? 0);
if ($id <= 0) { header('Location: products.php'); exit; }

$ok  = isset($_GET['ok']) ? 'تم إنشاء المنتج بنجاح. يمكنك الآن إضافة/تعديل الصور والفيديو.' : '';
$msg = '';
$err = '';

$cats = $pdo->query('SELECT id,name FROM categories ORDER BY name')->fetchAll(PDO::FETCH_ASSOC);

// جلب المنتج
$st = $pdo->prepare('SELECT * FROM products WHERE id=:id');
$st->execute([':id'=>$id]);
$product = $st->fetch(PDO::FETCH_ASSOC);
if (!$product) { header('Location: products.php'); exit; }

/* =======================
   حفظ بيانات المنتج
======================= */
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['act'] ?? '') === 'save') {
  if (!csrf_check($_POST['csrf'] ?? '')) {
    $err = 'فشل التحقق الأمني (CSRF).';
  } else {
    $name  = trim($_POST['name'] ?? '');
    $slug  = trim($_POST['slug'] ?? '');
    $catId = (int)($_POST['category_id'] ?? 0);
    $price = (float)($_POST['price'] ?? 0);
    $stock = (int)($_POST['stock'] ?? 0);
    $desc  = trim($_POST['description'] ?? '');

    if ($name === '') {
      $err = 'يرجى إدخال اسم المنتج.';
    }

    // توليد/تنظيف slug بشكل أوضح ومفهوم
    if ($slug === '') {
      $slugSource = $name;
    } else {
      $slugSource = $slug;
    }
    $slug = strtolower($slugSource);
    $slug = preg_replace('~[^\p{Arabic}a-z0-9\- ]+~u', '-', $slug); // حذف الرموز الغريبة
    $slug = preg_replace('~\s+~u', '-', $slug);                      // مسافات -> -
    $slug = preg_replace('~-+~', '-', $slug);                        // - مكررة
    $slug = trim($slug, '-');

    // صورة رئيسية جديدة (اختياري)
    $mainImagePath = $product['main_image'];
    if (!$err && !empty($_FILES['main_image']['name'])) {
      $res = save_upload($_FILES['main_image'], 'image');
      if ($res['ok']) $mainImagePath = $res['path']; else $err = $res['error'];
    }

    if (!$err) {
      $up = $pdo->prepare('UPDATE products 
                           SET category_id=:c,
                               name=:n,
                               slug=:s,
                               description=:d,
                               price=:p,
                               stock=:st,
                               main_image=:m
                           WHERE id=:id');
      $up->execute([
        ':c'=>$catId ?: null,
        ':n'=>$name,
        ':s'=>$slug,
        ':d'=>$desc !== '' ? $desc : null,
        ':p'=>$price,
        ':st'=>$stock,
        ':m'=>$mainImagePath,
        ':id'=>$id
      ]);
      $msg = 'تم حفظ التعديلات بنجاح.';

      // تحديث نسخة العرض
      $product = array_merge($product, [
        'category_id'=>$catId ?: null,
        'name'=>$name,
        'slug'=>$slug,
        'description'=>$desc !== '' ? $desc : null,
        'price'=>$price,
        'stock'=>$stock,
        'main_image'=>$mainImagePath
      ]);
    }
  }
}

/* =======================
   إضافة صور متعددة
======================= */
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['act'] ?? '') === 'add_images') {
  if (!csrf_check($_POST['csrf'] ?? '')) {
    $err = 'فشل التحقق الأمني (CSRF).';
  } else {
    if (!empty($_FILES['gallery']['name'][0])) {
      foreach ($_FILES['gallery']['name'] as $i=>$nm) {
        if (!$_FILES['gallery']['name'][$i]) continue;
        $file = [
          'name'=>$_FILES['gallery']['name'][$i],
          'type'=>$_FILES['gallery']['type'][$i],
          'tmp_name'=>$_FILES['gallery']['tmp_name'][$i],
          'error'=>$_FILES['gallery']['error'][$i],
          'size'=>$_FILES['gallery']['size'][$i],
        ];
        $r = save_upload($file, 'image');
        if ($r['ok']) {
          $pdo->prepare('INSERT INTO product_media (product_id,media_type,file,sort_order) VALUES (:p,"image",:f,0)')
              ->execute([':p'=>$id, ':f'=>$r['path']]);
        } else {
          $err = $r['error'];
        }
      }
      if (!$err) $msg = 'تمت إضافة الصور بنجاح.';
    } else {
      $err = 'اختر صورة واحدة على الأقل.';
    }
  }
}

/* =======================
   إضافة فيديو + صورة غلاف
======================= */
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['act'] ?? '') === 'add_video') {
  if (!csrf_check($_POST['csrf'] ?? '')) {
    $err = 'فشل التحقق الأمني (CSRF).';
  } else {
    $video_url = trim($_POST['video_url'] ?? '');
    $savedVideoPath = null;

    if ($video_url !== '') {
      // حفظ كرابط خارجي
      $pdo->prepare('INSERT INTO product_media (product_id,media_type,file,sort_order) VALUES (:p,"video",:f,0)')
          ->execute([':p'=>$id, ':f'=>$video_url]);
      $savedVideoPath = $video_url;
      $msg = 'تم إضافة الفيديو (كرابط).';
    } elseif (!empty($_FILES['video_file']['name'])) {
      $vr = save_upload($_FILES['video_file'], 'video');
      if ($vr['ok']) {
        $pdo->prepare('INSERT INTO product_media (product_id,media_type,file,sort_order) VALUES (:p,"video",:f,0)')
            ->execute([':p'=>$id, ':f'=>$vr['path']]);
        $savedVideoPath = $vr['path'];
        $msg = 'تم إضافة الفيديو (كملف مرفوع).';
      } else {
        $err = $vr['error'];
      }
    } else {
      $err = 'أضف رابط فيديو أو ارفع ملف فيديو.';
    }

    // إذا تم حفظ فيديو بنجاح ولم يحدث خطأ، نحاول حفظ صورة غلاف للفيديو إن وُجدت
    if (!$err && $savedVideoPath !== null && !empty($_FILES['video_poster']['name'])) {
      $pr = save_upload($_FILES['video_poster'], 'image');
      if ($pr['ok']) {
        // نخزن صورة الغلاف كصورة عادية لكن مع sort_order = -10 لتظهر أولاً في المعرض/الرئيسية
        $pdo->prepare('INSERT INTO product_media (product_id,media_type,file,sort_order) VALUES (:p,"image",:f,-10)')
            ->execute([':p'=>$id, ':f'=>$pr['path']]);
        $msg .= ' تم أيضاً حفظ صورة غلاف للفيديو.';
      } else {
        // لا نلغي الفيديو لو فشلت صورة الغلاف، فقط نُظهر تنبيه
        $msg .= ' (تعذر حفظ صورة الغلاف: ' . $pr['error'] . ')';
      }
    }
  }
}

/* =======================
   وسائط المنتج
======================= */
$media = $pdo->prepare('SELECT * FROM product_media WHERE product_id=:p ORDER BY sort_order,id');
$media->execute([':p'=>$id]);
$mediaList = $media->fetchAll(PDO::FETCH_ASSOC);
?>
<!doctype html>
<html lang="ar" dir="rtl">
<head>
  <meta charset="utf-8">
  <title>تعديل منتج</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:#f5f7fb;font-family:'Cairo',system-ui,-apple-system,'Segoe UI',sans-serif;}
    .shell{max-width:980px;}
    .page-title{
      font-weight:900;
      font-size:1.2rem;
      margin:0 0 .3rem;
    }
    .page-sub{
      margin:0;
      color:#64748b;
      font-size:.85rem;
    }
  </style>
</head>
<body>
<div class="container py-4 shell">

  <div class="d-flex justify-content-between align-items-start gap-2 mb-3 flex-wrap">
    <div>
      <h1 class="page-title">تعديل منتج: <?= e($product['name']) ?></h1>
      <p class="page-sub">تحديث بيانات المنتج، الصورة الرئيسية، الصور الإضافية، الفيديو، وغلاف الفيديو.</p>
    </div>
    <div class="d-flex flex-wrap gap-2">
      <!-- زر تعيين/إلغاء مميز -->
      <form method="post" action="product_feature_toggle.php" class="m-0">
        <input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>">
        <input type="hidden" name="id" value="<?= (int)$product['id'] ?>">
        <?php if (!empty($product['is_featured'])): ?>
          <button class="btn btn-warning rounded-pill">
            <i class="bi bi-star-fill"></i> إلغاء تعيين كمميز
          </button>
        <?php else: ?>
          <button class="btn btn-outline-warning rounded-pill">
            <i class="bi bi-star"></i> تعيين كمنتج مميز
          </button>
        <?php endif; ?>
      </form>

      <!-- عرض في المتجر -->
      <a href="../public/product.php?id=<?= (int)$product['id'] ?>" target="_blank" class="btn btn-secondary rounded-pill">
        <i class="bi bi-box-arrow-up-right"></i> عرض في المتجر
      </a>

      <!-- إضافة منتج جديد -->
      <a href="product_add.php" class="btn btn-outline-primary rounded-pill">
        <i class="bi bi-plus-circle"></i> إضافة منتج جديد
      </a>
    </div>
  </div>

  <?php if ($ok): ?>
    <div class="alert alert-success"><?= e($ok) ?></div>
  <?php endif; ?>
  <?php if ($msg): ?>
    <div class="alert alert-success"><?= e($msg) ?></div>
  <?php endif; ?>
  <?php if ($err): ?>
    <div class="alert alert-danger"><?= e($err) ?></div>
  <?php endif; ?>

  <!-- نموذج بيانات المنتج الأساسية -->
  <form method="post" enctype="multipart/form-data" class="card p-3 mb-4">
    <input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>">
    <input type="hidden" name="act" value="save">
    <div class="row g-3">
      <div class="col-md-8">
        <label class="form-label">اسم المنتج</label>
        <input type="text" name="name" class="form-control" value="<?= e($product['name']) ?>" required>
      </div>
      <div class="col-md-4">
        <label class="form-label">الرابط المختصر (Slug)</label>
        <input
          type="text"
          name="slug"
          class="form-control"
          placeholder="مثال: برغندي-الكرمي-قصة-وحكاية"
          value="<?= e($product['slug']) ?>">
        <div class="form-text small">
          يُستخدم في رابط الصفحة، يفضّل أن يكون قصيراً وبدون مسافات (استبدل المسافات بشرطة -).
        </div>
      </div>

      <div class="col-md-4">
        <label class="form-label">القسم</label>
        <select name="category_id" class="form-select">
          <option value="0">بدون قسم</option>
          <?php foreach ($cats as $c): ?>
            <option value="<?= (int)$c['id'] ?>" <?= (int)$product['category_id']===(int)$c['id']?'selected':'' ?>>
              <?= e($c['name']) ?>
            </option>
          <?php endforeach; ?>
        </select>
      </div>
      <div class="col-md-4">
        <label class="form-label">السعر</label>
        <input type="number" step="0.01" min="0" name="price" class="form-control" value="<?= e($product['price']) ?>" required>
      </div>
      <div class="col-md-4">
        <label class="form-label">المخزون</label>
        <input type="number" min="0" name="stock" class="form-control" value="<?= (int)$product['stock'] ?>">
      </div>

      <div class="col-12">
        <label class="form-label">الوصف</label>
        <textarea name="description" rows="5" class="form-control"><?= e($product['description']) ?></textarea>
      </div>

      <div class="col-md-6">
        <label class="form-label">الصورة الرئيسية</label>
        <input type="file" name="main_image" accept="image/*" class="form-control">
        <?php if ($product['main_image']): ?>
          <div class="mt-2">
            <img src="<?= e(asset_url($product['main_image'])) ?>" alt="" style="max-height:140px" class="rounded border">
          </div>
        <?php endif; ?>
        <div class="form-text small">يمكنك ترك هذا الحقل فارغاً إذا لم ترغب في تغيير الصورة الحالية.</div>
      </div>
    </div>

    <div class="mt-3 d-flex gap-2">
      <button class="btn btn-success rounded-pill"><i class="bi bi-save"></i> حفظ التعديلات</button>
      <a href="products.php" class="btn btn-secondary rounded-pill">رجوع لقائمة المنتجات</a>
    </div>
  </form>

  <!-- إضافة صور -->
  <div class="card p-3 mb-4">
    <h2 class="h6 mb-3">إضافة صور للمنتج</h2>
    <form method="post" enctype="multipart/form-data" class="row g-3">
      <input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>">
      <input type="hidden" name="act" value="add_images">
      <div class="col-md-9">
        <input type="file" name="gallery[]" accept="image/*" class="form-control" multiple required>
      </div>
      <div class="col-md-3 d-grid">
        <button class="btn btn-primary rounded-pill">إضافة الصور</button>
      </div>
    </form>
  </div>

  <!-- إضافة فيديو + غلاف -->
  <div class="card p-3 mb-4">
    <h2 class="h6 mb-3">إضافة فيديو للمنتج</h2>
    <p class="small text-muted mb-3">
      يمكنك ربط فيديو من يوتيوب أو Facebook Reels / Instagram Reels، أو رفع ملف فيديو من جهازك، مع إمكانية تحديد صورة غلاف للفيديو تظهر في الرئيسية وصفحة المنتج.
    </p>
    <form method="post" enctype="multipart/form-data" class="row g-3 align-items-end">
      <input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>">
      <input type="hidden" name="act" value="add_video">

      <div class="col-md-6">
        <label class="form-label small mb-1">رابط الفيديو (YouTube / Reels / رابط خارجي)</label>
        <input
          type="url"
          name="video_url"
          class="form-control"
          placeholder="مثال: https://www.youtube.com/watch?v=XXXX أو https://www.facebook.com/reel/2677534639277299">
        <div class="form-text small">
          إذا أدخلت رابطاً هنا، سيتم استخدامه كفيديو للمنتج (لا حاجة لرفع ملف فيديو).
        </div>
      </div>

      <div class="col-md-3">
        <label class="form-label small mb-1">أو رفع ملف فيديو من جهازك</label>
        <input
          type="file"
          name="video_file"
          accept="video/mp4,video/webm"
          class="form-control">
        <div class="form-text small">
          اتركه فارغاً إذا كنت تستخدم رابط يوتيوب أو Reels فقط.
        </div>
      </div>

      <div class="col-md-3">
        <label class="form-label small mb-1">صورة غلاف الفيديو (اختيارية)</label>
        <input
          type="file"
          name="video_poster"
          accept="image/*"
          class="form-control">
        <div class="form-text small">
          تظهر هذه الصورة في الرئيسية وسلايدر المنتج كغلاف للفيديو.
        </div>
      </div>

      <div class="col-12 col-md-3 d-grid mt-2">
        <button class="btn btn-primary rounded-pill">
          <i class="bi bi-cloud-upload"></i> إضافة الفيديو
        </button>
      </div>
    </form>
  </div>

  <!-- وسائط المنتج -->
  <div class="card p-3">
    <h2 class="h6 mb-3">وسائط المنتج</h2>
    <?php if (!$mediaList): ?>
      <div class="text-muted">لا توجد صور أو فيديوهات بعد.</div>
    <?php else: ?>
      <div class="row g-3">
        <?php foreach ($mediaList as $m): ?>
          <div class="col-6 col-md-3">
            <div class="border rounded p-2 text-center bg-white h-100 d-flex flex-column justify-content-between">
              <?php if ($m['media_type']==='image'): ?>

                <img src="<?= e(asset_url($m['file'])) ?>" class="img-fluid rounded mb-2" alt="">

              <?php else: ?>
                <?php
                  $file = $m['file'];
                  $isExternal = preg_match('~^https?://~i', $file);
                  $isYouTube  = $isExternal && preg_match('~youtube\.com|youtu\.be~i', $file);
                  $isFacebook = $isExternal && preg_match('~facebook\.com/.*/(videos|reel)/~i', $file);
                  $isInsta    = $isExternal && preg_match('~instagram\.com/(reel|p)/~i', $file);
                ?>

                <?php if ($isYouTube): ?>
                  <div class="ratio ratio-16x9 mb-2">
                    <?php
                      $vid = '';
                      $urlQuery = parse_url($file, PHP_URL_QUERY);
                      if ($urlQuery) {
                        parse_str($urlQuery, $qv);
                        $vid = $qv['v'] ?? '';
                      }
                      if (!$vid && preg_match('~youtu\.be/([^?&/]+)~', $file, $mm)) {
                        $vid = $mm[1] ?? '';
                      }
                    ?>
                    <?php if ($vid): ?>
                      <iframe
                        src="https://www.youtube.com/embed/<?= e($vid) ?>"
                        title="فيديو المنتج"
                        frameborder="0"
                        allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
                        allowfullscreen>
                      </iframe>
                    <?php else: ?>
                      <a href="<?= e($file) ?>" target="_blank" class="small d-inline-block text-truncate" style="max-width:100%;">
                        فيديو يوتيوب
                      </a>
                    <?php endif; ?>
                  </div>

                <?php elseif ($isFacebook): ?>
                  <div class="ratio ratio-16x9 mb-2">
                    <iframe
                      src="https://www.facebook.com/plugins/video.php?href=<?= urlencode($file) ?>&show_text=false&width=400"
                      style="border:none;overflow:hidden"
                      scrolling="no"
                      frameborder="0"
                      allowfullscreen="true"
                      allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share">
                    </iframe>
                  </div>

                <?php elseif ($isInsta): ?>
                  <div class="mb-2">
                    <a href="<?= e($file) ?>" target="_blank" class="small d-inline-block text-truncate" style="max-width:100%;">
                      فيديو Instagram / Reels
                    </a>
                  </div>

                <?php else: ?>
                  <?php if ($isExternal): ?>
                    <a href="<?= e($file) ?>" target="_blank" class="small d-inline-block text-truncate mb-2" style="max-width:100%;">
                      رابط فيديو خارجي
                    </a>
                  <?php else: ?>
                    <video src="<?= e(asset_url($file)) ?>" controls style="max-width:100%;height:auto" class="mb-2"></video>
                  <?php endif; ?>
                <?php endif; ?>
              <?php endif; ?>

              <form method="post" action="product_media_delete.php" class="mt-1">
                <input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>">
                <input type="hidden" name="id" value="<?= (int)$m['id'] ?>">
                <input type="hidden" name="product_id" value="<?= $id ?>">
                <button class="btn btn-sm btn-outline-danger rounded-pill w-100" onclick="return confirm('حذف هذا الوسيط؟');">
                  <i class="bi bi-trash"></i> حذف
                </button>
              </form>
            </div>
          </div>
        <?php endforeach; ?>
      </div>
    <?php endif; ?>
  </div>

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