<?php
// المسار: admin/product_add.php
// إضافة منتج جديد مع:
// - توليد slug فريد يدعم العربية
// - التقاط صورة بالكاميرا (Base64)
// - رفع صورة رئيسية اختيارية + صور معرض متعددة
// - فيديو (رابط / كود iframe / ملف) + صورة غلاف للفيديو (poster)
// - تعيين أول صورة من المعرض كصورة رئيسية تلقائياً إذا لم تُحدد صورة رئيسية

declare(strict_types=1);

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

if (session_status() !== PHP_SESSION_ACTIVE) {
    ini_set('session.use_strict_mode', '1');
    session_start();
}

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

if (!function_exists('e')) {
    function e($v){ return htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8'); }
}

/* أدوات إنشاء slug فريد */
function slugify_base(string $text): string {
    if (function_exists('transliterator_transliterate')) {
        $text = transliterator_transliterate('Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; Latin-ASCII;', $text);
    } else {
        $converted = @iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $text);
        if ($converted !== false) $text = $converted;
    }
    $ar = ['أ','إ','آ','ا','ب','ت','ث','ج','ح','خ','د','ذ','ر','ز','س','ش','ص','ض','ط','ظ','ع','غ','ف','ق','ك','ل','م','ن','ه','و','ي','ة','ى','ئ','ؤ','ﻻ','لا','ٔ','ء'];
    $en = ['a','i','a','a','b','t','th','j','h','kh','d','th','r','z','s','sh','s','d','t','z','a','gh','f','q','k','l','m','n','h','w','y','h','a','y','w','la','la','',''];
    $text = str_replace($ar, $en, $text);
    $text = strtolower($text);
    $text = preg_replace('~[^a-z0-9]+~', '-', $text) ?? '';
    $text = trim($text, '-');
    return $text ?: '';
}
function generate_fallback_slug(): string {
    return 'product-'.date('ymd').'-'.substr(bin2hex(random_bytes(4)),0,8);
}
function make_unique_slug(PDO $pdo, string $baseSlug): string {
    $slug = $baseSlug !== '' ? $baseSlug : generate_fallback_slug();
    if ($slug === '-' || $slug === '') $slug = generate_fallback_slug();
    $check = $pdo->prepare('SELECT COUNT(*) FROM products WHERE slug=:s');
    $current = $slug; $i = 2;
    while (true) {
        $check->execute([':s'=>$current]);
        if ((int)$check->fetchColumn() === 0) return $current;
        $current = $slug . '-' . $i;
        $i++;
        if ($i > 5000) {
            $current = generate_fallback_slug();
            $check->execute([':s'=>$current]);
            if ((int)$check->fetchColumn() === 0) return $current;
            $current .= '-'.substr(bin2hex(random_bytes(2)),0,4);
            return $current;
        }
    }
}

/* الأقسام */
$cats = [];
try {
    $cats = $pdo->query('SELECT id,name FROM categories ORDER BY name')->fetchAll(PDO::FETCH_ASSOC);
} catch (Throwable $e) {
    $cats = [];
}

$err = '';
$msg = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['act'] ?? '') === 'create') {
    if (!csrf_check($_POST['csrf'] ?? '')) {
        $err = 'انتهت صلاحية النموذج، أعد التحميل.';
    } else {
        $name   = trim($_POST['name'] ?? '');
        $slugIn = trim($_POST['slug'] ?? '');
        $catId  = (int)($_POST['category_id'] ?? 0);
        $price  = (float)($_POST['price'] ?? 0);
        $stock  = (int)($_POST['stock'] ?? 10);
        $desc   = trim($_POST['description'] ?? '');
        $isFeatured = !empty($_POST['is_featured']) ? 1 : 0;

        if ($name === '') {
            $err = 'اسم المنتج مطلوب.';
        }

        $baseSlug = $slugIn !== '' ? slugify_base($slugIn) : slugify_base($name);
        $slug     = make_unique_slug($pdo, $baseSlug);

        // الصورة الرئيسية: الأولوية لصورة الكاميرا المباشرة كملف، ثم Base64، ثم الملف العادي
        $mainImagePath = '';
        if (!$err) {
            $hasCameraFile = isset($_FILES['camera_image'])
                && is_array($_FILES['camera_image'])
                && ($_FILES['camera_image']['error'] ?? UPLOAD_ERR_NO_FILE) === UPLOAD_ERR_OK
                && !empty($_FILES['camera_image']['tmp_name']);

            $hasMainFile = isset($_FILES['main_image'])
                && is_array($_FILES['main_image'])
                && ($_FILES['main_image']['error'] ?? UPLOAD_ERR_NO_FILE) === UPLOAD_ERR_OK
                && !empty($_FILES['main_image']['tmp_name']);

            if ($hasCameraFile) {
                $r = save_upload($_FILES['camera_image'], 'image');
                if ($r['ok']) {
                    $mainImagePath = $r['path'];
                } else {
                    $err = $r['error'];
                }
            } elseif (!empty($_POST['main_camera_image'])) {
                $b64 = (string)$_POST['main_camera_image'];
                if (preg_match('~^data:image/(jpeg|jpg|png|webp);base64,~i', $b64, $m)) {
                    $ext  = strtolower($m[1]);
                    $ext  = $ext === 'jpeg' ? 'jpg' : $ext;
                    $data = substr($b64, strpos($b64, ',') + 1);
                    $bin  = base64_decode($data, true);
                    if ($bin === false || strlen($bin) < 100) {
                        $err = 'فشل قراءة صورة الكاميرا، حاول التقاطها مرة أخرى.';
                    } else {
                        $tmpName = sys_get_temp_dir() . '/cam_' . bin2hex(random_bytes(6)) . '.' . $ext;
                        file_put_contents($tmpName, $bin);
                        $fakeFile = [
                            'name'     => 'camera_' . date('Ymd_His') . '.' . $ext,
                            'type'     => 'image/' . ($ext === 'jpg' ? 'jpeg' : $ext),
                            'tmp_name' => $tmpName,
                            'error'    => UPLOAD_ERR_OK,
                            'size'     => strlen($bin),
                        ];
                        $r = save_upload($fakeFile, 'image');
                        @unlink($tmpName);
                        if ($r['ok']) {
                            $mainImagePath = $r['path'];
                        } else {
                            $err = $r['error'];
                        }
                    }
                } else {
                    $err = 'تنسيق صورة الكاميرا غير صالح. التقط الصورة مرة أخرى.';
                }
            } elseif ($hasMainFile) {
                $r = save_upload($_FILES['main_image'], 'image');
                if ($r['ok']) {
                    $mainImagePath = $r['path'];
                } else {
                    $err = $r['error'];
                }
            }
        }

        // يمكن أن يكون رابط عادي أو كود iframe جاهز
        $video_url     = trim($_POST['video_url'] ?? '');
        $hasVideoFile  = !empty($_FILES['video_file']['name']);
        $hasPosterFile = !empty($_FILES['video_poster']['name']);

        if (!$err) {
            try {
                $pdo->beginTransaction();

                $stmt = $pdo->prepare('INSERT INTO products (category_id,name,slug,description,price,stock,main_image,is_featured,created_at)
                                       VALUES (:c,:n,:s,:d,:p,:st,:m,:f,NOW())');
                $stmt->execute([
                    ':c'=>$catId ?: null,
                    ':n'=>$name,
                    ':s'=>$slug,
                    ':d'=>$desc!=='' ? $desc : null,
                    ':p'=>$price,
                    ':st'=>$stock,
                    ':m'=>$mainImagePath,
                    ':f'=>$isFeatured
                ]);
                $newId = (int)$pdo->lastInsertId();

                // صور المعرض
                $firstGalleryImage = '';
                if (!empty($_FILES['gallery']) && !empty($_FILES['gallery']['name'][0])) {
                    $insImg = $pdo->prepare('INSERT INTO product_media (product_id,media_type,file,sort_order) VALUES (:pid,"image",:f,0)');
                    foreach ($_FILES['gallery']['name'] as $i => $nm) {
                        if (!$nm) 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],
                        ];
                        $g = save_upload($file, 'image');
                        if ($g['ok']) {
                            $insImg->execute([':pid'=>$newId, ':f'=>$g['path']]);
                            if ($firstGalleryImage === '') $firstGalleryImage = $g['path'];
                        } else {
                            @file_put_contents(__DIR__.'/../includes/log_gallery_uploads.log',
                                date('c').' - product '.$newId.' - '.$g['error'].PHP_EOL, FILE_APPEND);
                        }
                    }
                }

                // فيديو (رابط أو كود iframe)
                if ($video_url !== '') {
                    $pdo->prepare('INSERT INTO product_media (product_id,media_type,file,sort_order) VALUES (:pid,"video",:f,0)')
                        ->execute([':pid'=>$newId, ':f'=>$video_url]);
                }

                // فيديو (ملف)
                if ($hasVideoFile) {
                    $vr = save_upload($_FILES['video_file'], 'video');
                    if ($vr['ok']) {
                        $pdo->prepare('INSERT INTO product_media (product_id,media_type,file,sort_order) VALUES (:pid,"video",:f,0)')
                            ->execute([':pid'=>$newId, ':f'=>$vr['path']]);
                    } else {
                        @file_put_contents(__DIR__.'/../includes/log_video_uploads.log',
                            date('c').' - product '.$newId.' - '.$vr['error'].PHP_EOL, FILE_APPEND);
                    }
                }

                // صورة غلاف للفيديو (poster) -> نخزنها كصورة بالـ sort_order=-10
                if ($hasPosterFile) {
                    $pr = save_upload($_FILES['video_poster'], 'image');
                    if ($pr['ok']) {
                        $pdo->prepare('INSERT INTO product_media (product_id,media_type,file,sort_order) VALUES (:pid,"image",:f,-10)')
                            ->execute([':pid'=>$newId, ':f'=>$pr['path']]);
                    } else {
                        @file_put_contents(__DIR__.'/../includes/log_video_poster_uploads.log',
                            date('c').' - product '.$newId.' - '.$pr['error'].PHP_EOL, FILE_APPEND);
                    }
                }

                // تعيين أول صورة معرض كصورة رئيسية إذا لم تُحدد صورة رئيسية
                if ($mainImagePath === '' && $firstGalleryImage !== '') {
                    $upd = $pdo->prepare('UPDATE products SET main_image=:m WHERE id=:id');
                    $upd->execute([':m'=>$firstGalleryImage, ':id'=>$newId]);
                }

                $pdo->commit();
                header('Location: product_edit.php?id='.$newId.'&ok=1');
                exit;

            } catch (Throwable $e) {
                if ($pdo->inTransaction()) $pdo->rollBack();
                $err = 'تعذر حفظ المنتج: '.$e->getMessage();
            }
        }
    }
}

$title = 'إضافة منتج جديد';
?>
<!doctype html>
<html lang="ar" dir="rtl">
<head>
  <meta charset="utf-8">
  <title><?= e($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>
    :root{
      --bg:#f4f7fb;
      --card:#ffffff;
      --ink:#0f172a;
      --muted:#64748b;
      --line:#e2e8f0;
      --green:#16a34a;
      --green2:#0f766e;
      --blue:#2563eb;
      --gold:#f59e0b;
      --danger:#dc2626;
      --shadow:0 20px 55px rgba(15,23,42,.10);
      --shadow2:0 10px 25px rgba(15,23,42,.08);
      --radius:22px;
    }
    *{box-sizing:border-box}
    body{
      margin:0;
      background:
        radial-gradient(circle at 85% 5%, rgba(22,163,74,.13), transparent 28%),
        radial-gradient(circle at 10% 10%, rgba(37,99,235,.11), transparent 30%),
        linear-gradient(180deg,#f8fafc 0%, var(--bg) 100%);
      color:var(--ink);
      font-family:Tahoma, Arial, sans-serif;
      min-height:100vh;
    }
    .page-shell{width:min(1180px,100%);margin:auto;padding:18px 14px 90px}
    .topbar{
      position:sticky;top:0;z-index:20;
      margin:-18px -14px 18px;
      padding:14px;
      background:rgba(248,250,252,.88);
      backdrop-filter:blur(14px);
      border-bottom:1px solid rgba(226,232,240,.8);
    }
    .topbar-inner{
      width:min(1180px,100%);
      margin:auto;
      display:flex;
      justify-content:space-between;
      align-items:center;
      gap:12px;
      flex-wrap:wrap;
    }
    .title-block h1{font-size:clamp(22px,3vw,34px);font-weight:900;margin:0}
    .title-block p{margin:5px 0 0;color:var(--muted);font-size:14px}
    .quick-actions{display:flex;gap:8px;flex-wrap:wrap}
    .btn-pill{border-radius:999px;font-weight:800;padding:.62rem 1rem}
    .main-grid{display:grid;grid-template-columns:1.55fr .85fr;gap:16px;align-items:start}
    .card-soft{
      background:rgba(255,255,255,.95);
      border:1px solid rgba(226,232,240,.95);
      border-radius:var(--radius);
      box-shadow:var(--shadow2);
      padding:18px;
    }
    .section-title{
      display:flex;align-items:center;justify-content:space-between;gap:10px;
      margin:0 0 14px;font-weight:900;font-size:18px;
    }
    .section-title small{font-weight:700;color:var(--muted);font-size:12px}
    .form-label{font-weight:900;color:#334155;margin-bottom:7px}
    .form-control,.form-select{
      border-radius:15px;
      border:1px solid var(--line);
      min-height:48px;
      font-size:16px;
      background:#fbfdff;
    }
    textarea.form-control{min-height:auto}
    .form-control:focus,.form-select:focus{
      border-color:var(--green);
      box-shadow:0 0 0 .22rem rgba(22,163,74,.14);
      background:#fff;
    }
    .hint{font-size:12.5px;color:var(--muted);margin-top:5px}
    .ai-box{
      background:linear-gradient(135deg, rgba(22,163,74,.10), rgba(37,99,235,.10));
      border:1px solid rgba(22,163,74,.22);
      border-radius:20px;
      padding:15px;
      margin-bottom:16px;
    }
    .ai-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:12px}
    .ai-head b{font-size:17px}
    .ai-chips{display:flex;gap:7px;flex-wrap:wrap}
    .chip{
      border:1px solid var(--line);
      background:#fff;
      border-radius:999px;
      padding:7px 11px;
      font-size:13px;
      font-weight:800;
      cursor:pointer;
      transition:.18s;
    }
    .chip:hover{transform:translateY(-1px);border-color:var(--green);color:#166534}
    .speed-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}
    .speed-card{
      border:1px solid var(--line);
      background:#fff;
      border-radius:17px;
      padding:12px;
      cursor:pointer;
      transition:.18s;
      min-height:76px;
    }
    .speed-card:hover{transform:translateY(-2px);box-shadow:0 10px 20px rgba(15,23,42,.08);border-color:rgba(22,163,74,.45)}
    .speed-card b{display:block;font-size:14px;margin-bottom:4px}
    .speed-card span{color:var(--muted);font-size:12px}
    .upload-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:14px}
    .preview-main{
      width:150px;height:150px;object-fit:cover;
      border:3px solid rgba(22,163,74,.55);
      border-radius:20px;margin-top:.75rem;
      box-shadow:0 8px 20px rgba(15,23,42,.11);
    }
    .preview-img{width:92px;height:92px;object-fit:cover;border:1px solid #ddd;border-radius:16px;margin:.3rem}
    .cam-area{
      border:1px dashed rgba(22,163,74,.45);
      background:linear-gradient(135deg,#ffffff,#f8fffb);
      border-radius:20px;
      padding:15px;
    }
    .side-card{
      position:sticky;
      top:92px;
    }
    .mini-help{display:grid;gap:9px}
    .help-item{
      display:flex;gap:10px;align-items:flex-start;
      padding:11px;border-radius:16px;background:#f8fafc;border:1px solid var(--line);
      color:#334155;font-size:13px;
    }
    .help-item i{font-size:18px;color:var(--green)}
    .submit-bar{
      position:fixed;right:0;left:0;bottom:0;z-index:30;
      background:rgba(255,255,255,.93);
      backdrop-filter:blur(15px);
      border-top:1px solid var(--line);
      padding:10px 14px;
    }
    .submit-inner{width:min(1180px,100%);margin:auto;display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}
    .submit-inner .btn{min-width:150px}
    .mobile-only{display:none}
    @media (max-width: 992px){
      .main-grid{grid-template-columns:1fr}
      .side-card{position:static}
      .speed-row{grid-template-columns:repeat(2,1fr)}
    }
    @media (max-width: 768px){
      .page-shell{padding-left:10px;padding-right:10px}
      .topbar{margin-left:-10px;margin-right:-10px}
      .card-soft{padding:14px;border-radius:18px}
      .upload-grid{grid-template-columns:1fr}
      .quick-actions{width:100%}
      .quick-actions .btn{flex:1}
      .submit-inner{align-items:stretch}
      .submit-inner .btn{flex:1;min-width:0}
      .desktop-note{display:none}
      .mobile-only{display:block}
      .preview-main{width:132px;height:132px}
      .speed-row{grid-template-columns:1fr}
    }
    @media (max-width: 420px){
      .btn-pill{padding:.55rem .72rem;font-size:14px}
      .form-control,.form-select{font-size:15px;min-height:45px}
      .ai-chips .chip{width:100%;text-align:center}
    }
  </style>
</head>
<body>
<div class="topbar">
  <div class="topbar-inner">
    <div class="title-block">
      <h1><i class="bi bi-box-seam"></i> <?= e($title) ?></h1>
      <p>إضافة سريعة ومنظمة مع مساعد ذكي وتجهيز تلقائي للبيانات.</p>
    </div>
    <div class="quick-actions">
      <a href="products.php" class="btn btn-outline-secondary btn-pill"><i class="bi bi-arrow-right"></i> المنتجات</a>
      <a href="categories.php" class="btn btn-outline-info btn-pill"><i class="bi bi-tags"></i> الأقسام</a>
    </div>
  </div>
</div>

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

  <form method="post" enctype="multipart/form-data" id="productForm">
    <div class="main-grid">
      <div class="card-soft">
    <input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>">
    <input type="hidden" name="act" value="create">
    <input type="hidden" name="main_camera_image" id="mainCameraImage">

        <div class="ai-box">
          <div class="ai-head">
            <b><i class="bi bi-stars"></i> المساعد الذكي لإضافة المنتج بسرعة</b>
            <small class="text-muted">محلي داخل الصفحة: يقترح وصف + سلاگ + ترتيب الاسم</small>
          </div>
          <div class="row g-2">
            <div class="col-lg-8">
              <input type="text" id="aiPrompt" class="form-control" placeholder="اكتب مثلاً: غسالة سامسونج 8 كيلو فضي انفرتر">
            </div>
            <div class="col-lg-4 d-grid">
              <button type="button" id="aiFillBtn" class="btn btn-success btn-pill">
                <i class="bi bi-magic"></i> توليد تلقائي
              </button>
            </div>
          </div>
          <div class="ai-chips mt-2">
            <button type="button" class="chip" data-ai="ثلاجة بابين حجم كبير لون فضي موفرة للطاقة">ثلاجة</button>
            <button type="button" class="chip" data-ai="غسالة اتوماتيك 8 كيلو انفرتر لون أبيض">غسالة</button>
            <button type="button" class="chip" data-ai="شاشة سمارت 55 بوصة 4K">شاشة</button>
            <button type="button" class="chip" data-ai="مكيف سبليت 1.5 طن بارد حار">مكيف</button>
          </div>
          <div class="speed-row">
            <div class="speed-card" data-stock="10"><b>مخزون افتراضي</b><span>يثبت المخزون على 10 دائماً</span></div>
            <div class="speed-card" id="copyNameToSlug"><b>سلاگ تلقائي</b><span>من اسم المنتج مباشرة</span></div>
            <div class="speed-card" id="makeFeatured"><b>تمييز المنتج</b><span>تفعيل المنتج كمميز</span></div>
            <div class="speed-card" id="clearMedia"><b>تنظيف الصور</b><span>إزالة المعاينات فقط</span></div>
          </div>
        </div>

        <div class="section-title">
          <span><i class="bi bi-pencil-square"></i> بيانات المنتج الأساسية</span>
          <small>المخزون الافتراضي = 10</small>
        </div>

    <div class="row g-3">
      <div class="col-md-6">
        <label class="form-label">اسم المنتج</label>
        <input type="text" name="name" id="nameInput" class="form-control" required value="<?= e($_POST['name'] ?? '') ?>">
      </div>
      <div class="col-md-6">
        <label class="form-label">الرابط المختصر / Slug (اختياري)</label>
        <input type="text" name="slug" id="slugInput" class="form-control" value="<?= e($_POST['slug'] ?? '') ?>" placeholder="إن تركته فارغاً سيتولد تلقائياً">
      </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'] ?>" <?= (!empty($_POST['category_id']) && (int)$_POST['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" id="priceInput" class="form-control" required value="<?= e($_POST['price'] ?? '') ?>">
      </div>
      <div class="col-md-4">
        <label class="form-label">المخزون</label>
        <input type="number" min="0" name="stock" id="stockInput" class="form-control" value="<?= e($_POST['stock'] ?? '10') ?>">
      </div>

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

      <div class="col-md-4">
        <label class="form-label d-flex justify-content-between align-items-center">
          <span>الصورة الرئيسية (ملف)</span>
          <small class="text-muted">أو التصوير المباشر</small>
        </label>
        <input type="file" name="main_image" id="mainImageInput" accept="image/*" class="form-control">
        <small class="text-muted d-block mt-1">اختيار ملف من الجهاز فقط. التصوير المباشر موجود في القسم التالي.</small>
        <img id="mainPreview" class="preview-main d-none" alt="">
      </div>

      <div class="col-md-8">
        <label class="form-label">صور المعرض (متعددة)</label>
        <input type="file" name="gallery[]" accept="image/*" multiple capture="environment" class="form-control">
        <div id="galleryPreview" class="d-flex flex-wrap mt-2"></div>
      </div>

      <div class="col-12">
        <div class="form-check form-switch">
          <input class="form-check-input" type="checkbox" name="is_featured" id="featSwitch" value="1" <?= !empty($_POST['is_featured'])?'checked':'' ?>>
          <label class="form-check-label" for="featSwitch">تعيين كمميز</label>
        </div>
      </div>
    </div>

    <!-- التصوير المباشر -->
    <div class="cam-area mt-4">
      <h6 class="mb-2"><i class="bi bi-camera-video"></i> التصوير المباشر (اختياري)</h6>
      <p class="small text-muted mb-2">افتح الكاميرا ثم التقط صورة. إذا التقطت صورة فستُستخدم كصورة رئيسية حتى لو اخترت ملفاً. على بعض أجهزة الموبايل يمكنك استخدام زر "تصوير سريع من الجهاز" وهو الأكثر توافقاً.</p>

      <div class="mb-3">
        <label class="form-label">تصوير سريع من الجهاز / الموبايل</label>
        <input type="file" name="camera_image" id="cameraImageInput" accept="image/*" capture="environment" class="form-control">
        <small class="text-muted">هذا الحقل يُرسل الصورة للسيرفر كملف حقيقي، ويحل مشكلة: لم ترفع أي ملف.</small>
      </div>

      <div class="d-flex flex-wrap gap-3 align-items-start">
        <div>
          <video id="camStream" playsinline class="rounded border d-none" style="width:220px;height:220px;object-fit:cover;"></video>
          <canvas id="camCanvas" class="d-none"></canvas>
        </div>
        <div class="d-flex flex-column gap-2">
          <button type="button" id="openCamBtn" class="btn btn-outline-primary btn-sm">
            <i class="bi bi-camera-video"></i> فتح الكاميرا
          </button>
          <button type="button" id="captureBtn" class="btn btn-success btn-sm d-none">
            <i class="bi bi-camera"></i> التقاط
          </button>
          <button type="button" id="closeCamBtn" class="btn btn-outline-secondary btn-sm d-none">
            <i class="bi bi-x-circle"></i> إغلاق
          </button>
          <small id="camStatus" class="text-muted"></small>
        </div>
        <div>
          <img id="capturedImagePreview" class="preview-main d-none" alt="صورة ملتقطة">
        </div>
      </div>
    </div>

    <!-- الفيديو -->
    <div class="card-soft mt-4">
      <h6 class="mb-2"><i class="bi bi-youtube"></i> فيديو المنتج (اختياري)</h6>
      <div class="row g-3">
        <div class="col-md-7">
          <label class="form-label">رابط فيديو أو كود iframe</label>
          <textarea
            name="video_url"
            class="form-control"
            rows="3"
            placeholder="يمكنك وضع رابط يوتيوب / فيسبوك / ريلز أو لصق كود &lt;iframe&gt; كامل كما هو من فيسبوك أو يوتيوب"><?= e($_POST['video_url'] ?? '') ?></textarea>
        </div>
        <div class="col-md-3">
          <label class="form-label">صورة غلاف الفيديو (اختيارية)</label>
          <input type="file" name="video_poster" accept="image/*" class="form-control">
          <small class="text-muted">تظهر هذه الصورة في الرئيسية وسلايدر المنتج كغلاف للفيديو.</small>
        </div>
        <div class="col-md-2">
          <label class="form-label">ملف فيديو (MP4/WEBM)</label>
          <input type="file" name="video_file" accept="video/mp4,video/webm" class="form-control">
        </div>
      </div>
      <small class="text-muted d-block mt-2">يمكن استخدام أحد الخيارين أو الجميع معاً.</small>
    </div>

      </div>

      <aside class="card-soft side-card">
        <div class="section-title">
          <span><i class="bi bi-lightning-charge"></i> تسريع الإدخال</span>
        </div>
        <div class="mini-help">
          <div class="help-item"><i class="bi bi-check-circle"></i><div><b>المخزون الافتراضي 10</b><br>تم ضبطه تلقائياً ويمكن تغييره عند الحاجة.</div></div>
          <div class="help-item"><i class="bi bi-camera"></i><div><b>التصوير السريع</b><br>استخدم تصوير الجهاز للموبايل لتجنب مشكلة لم ترفع أي ملف.</div></div>
          <div class="help-item"><i class="bi bi-stars"></i><div><b>المساعد الذكي</b><br>اكتب وصفاً مختصراً وسيملأ الاسم والوصف والرابط.</div></div>
          <div class="help-item"><i class="bi bi-phone"></i><div><b>متجاوب</b><br>الصفحة محسنة للموبايل والتابلت والكمبيوتر.</div></div>
        </div>
      </aside>
    </div>

    <div class="submit-bar">
      <div class="submit-inner">
        <span class="text-muted small desktop-note"><i class="bi bi-info-circle"></i> احفظ بسرعة بعد إدخال الاسم والسعر والصورة.</span>
        <button class="btn btn-success btn-pill">
          <i class="bi bi-save"></i> حفظ المنتج
        </button>
        <a href="products.php" class="btn btn-secondary btn-pill">رجوع</a>
      </div>
    </div>
  </form>
</div>

<script>

// مساعد ذكي بسيط داخل الصفحة لتسريع إدخال المنتجات
const nameInput = document.getElementById('nameInput');
const slugInput = document.getElementById('slugInput');
const priceInput = document.getElementById('priceInput');
const stockInput = document.getElementById('stockInput');
const descriptionInput = document.getElementById('descriptionInput');
const featSwitch = document.getElementById('featSwitch');
const aiPrompt = document.getElementById('aiPrompt');

function arSlug(str){
  const map = {'أ':'a','إ':'i','آ':'a','ا':'a','ب':'b','ت':'t','ث':'th','ج':'j','ح':'h','خ':'kh','د':'d','ذ':'th','ر':'r','ز':'z','س':'s','ش':'sh','ص':'s','ض':'d','ط':'t','ظ':'z','ع':'a','غ':'gh','ف':'f','ق':'q','ك':'k','ل':'l','م':'m','ن':'n','ه':'h','و':'w','ي':'y','ة':'h','ى':'a','ئ':'y','ؤ':'w','ء':''};
  return String(str || '').split('').map(ch => map[ch] ?? ch)
    .join('').toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/^-+|-+$/g,'');
}
function smartDescription(raw){
  const t = String(raw || '').trim();
  if (!t) return '';
  const features = [];
  if (/انفرتر|inverter/i.test(t)) features.push('تقنية انفرتر لتوفير الطاقة');
  if (/سمارت|smart/i.test(t)) features.push('تشغيل ذكي وسهل الاستخدام');
  if (/4k/i.test(t)) features.push('دقة عالية 4K');
  if (/فضي/.test(t)) features.push('لون فضي أنيق');
  if (/أبيض|ابيض/.test(t)) features.push('لون أبيض عملي');
  if (/مكيف/.test(t)) features.push('تبريد قوي ومناسب للاستخدام اليومي');
  if (/غسالة/.test(t)) features.push('أداء ممتاز للغسيل اليومي');
  if (/ثلاجة/.test(t)) features.push('مساحة تخزين مناسبة للعائلة');
  const extras = features.length ? features.join('، ') : 'جودة ممتازة واستخدام عملي وسهل';
  return `${t}\n\nمنتج مميز بمواصفات عملية: ${extras}.\nمناسب للمنزل والاستخدام اليومي، مع تصميم أنيق وسهولة في التشغيل.`;
}
function aiFill(raw){
  const t = String(raw || '').trim();
  if (!t) return;
  if (nameInput && !nameInput.value.trim()) nameInput.value = t;
  if (slugInput && !slugInput.value.trim()) slugInput.value = arSlug(t);
  if (descriptionInput && !descriptionInput.value.trim()) descriptionInput.value = smartDescription(t);
  if (stockInput && (!stockInput.value || stockInput.value === '0')) stockInput.value = '10';
}
document.getElementById('aiFillBtn')?.addEventListener('click', () => aiFill(aiPrompt?.value || nameInput?.value || ''));
document.querySelectorAll('[data-ai]').forEach(btn => {
  btn.addEventListener('click', () => {
    if (aiPrompt) aiPrompt.value = btn.dataset.ai || '';
    aiFill(btn.dataset.ai || '');
  });
});
document.querySelectorAll('[data-stock]').forEach(btn => btn.addEventListener('click', () => { if(stockInput) stockInput.value = btn.dataset.stock || '10'; }));
document.getElementById('copyNameToSlug')?.addEventListener('click', () => { if(slugInput && nameInput) slugInput.value = arSlug(nameInput.value); });
document.getElementById('makeFeatured')?.addEventListener('click', () => { if(featSwitch) featSwitch.checked = true; });
document.getElementById('clearMedia')?.addEventListener('click', () => {
  document.querySelectorAll('img.preview-main,img.preview-img').forEach(img => img.classList.add('d-none'));
  if (galleryPreview) galleryPreview.innerHTML = '';
});
nameInput?.addEventListener('blur', () => {
  if (slugInput && !slugInput.value.trim() && nameInput.value.trim()) slugInput.value = arSlug(nameInput.value);
});

// معاينة الصورة الرئيسية + صورة الكاميرا السريعة
const mainInput = document.getElementById('mainImageInput');
const cameraImageInput = document.getElementById('cameraImageInput');
const mainPreview = document.getElementById('mainPreview');

function previewSingleImage(input, targetImg) {
  if (input && input.files && input.files[0]) {
    const url = URL.createObjectURL(input.files[0]);
    targetImg.src = url;
    targetImg.classList.remove('d-none');
  }
}

mainInput?.addEventListener('change', () => {
  previewSingleImage(mainInput, mainPreview);
});

cameraImageInput?.addEventListener('change', () => {
  previewSingleImage(cameraImageInput, capturedPrev);
  document.getElementById('mainCameraImage').value = '';
  camStatus.textContent = 'تم اختيار/تصوير صورة من الجهاز، ستُستخدم كصورة رئيسية.';
});
// معاينة صور المعرض
const galleryInput = document.querySelector('input[name="gallery[]"]');
const galleryPreview = document.getElementById('galleryPreview');
galleryInput?.addEventListener('change', () => {
  galleryPreview.innerHTML = '';
  if (!galleryInput.files) return;
  Array.from(galleryInput.files).forEach(f => {
    const url = URL.createObjectURL(f);
    const img = document.createElement('img');
    img.src = url;
    img.className = 'preview-img';
    galleryPreview.appendChild(img);
  });
});

// التصوير المباشر
let stream = null;
const openCamBtn   = document.getElementById('openCamBtn');
const captureBtn   = document.getElementById('captureBtn');
const closeCamBtn  = document.getElementById('closeCamBtn');
const camVideo     = document.getElementById('camStream');
const camCanvas    = document.getElementById('camCanvas');
const camStatus    = document.getElementById('camStatus');
const hiddenB64    = document.getElementById('mainCameraImage');
const capturedPrev = document.getElementById('capturedImagePreview');

async function openCamera(){
  camStatus.textContent = '';
  try {
    stream = await navigator.mediaDevices.getUserMedia({
      video: { facingMode: { ideal: 'environment' } }, audio:false
    });
    camVideo.srcObject = stream;
    camVideo.classList.remove('d-none');
    captureBtn.classList.remove('d-none');
    closeCamBtn.classList.remove('d-none');
    openCamBtn.classList.add('d-none');
    await camVideo.play();
  } catch (err) {
    camStatus.textContent = 'تعذر فتح الكاميرا: ' + (err?.message || err);
  }
}
function captureFrame(){
  if (!stream) return;
  const s = stream.getVideoTracks()[0].getSettings();
  const w = s.width || camVideo.videoWidth || 900;
  const h = s.height || camVideo.videoHeight || 900;
  camCanvas.width = w;
  camCanvas.height = h;

  const ctx = camCanvas.getContext('2d');
  ctx.drawImage(camVideo, 0, 0, w, h);

  const dataURL = camCanvas.toDataURL('image/jpeg', 0.9);
  hiddenB64.value = dataURL;
  capturedPrev.src = dataURL;
  capturedPrev.classList.remove('d-none');

  // نحاول أيضاً تحويل اللقطة إلى ملف داخل input لضمان توافق أعلى مع $_FILES
  camCanvas.toBlob((blob) => {
    if (!blob) return;
    try {
      const file = new File([blob], 'camera_product_' + Date.now() + '.jpg', { type: 'image/jpeg' });
      const dt = new DataTransfer();
      dt.items.add(file);
      cameraImageInput.files = dt.files;
    } catch (e) {
      // بعض المتصفحات لا تسمح بتعبئة input برمجياً، لذلك يبقى Base64 كحل احتياطي.
      console.warn(e);
    }
  }, 'image/jpeg', 0.9);

  camStatus.textContent = 'تم التقاط الصورة وتجهيزها للرفع كصورة رئيسية.';
  mainPreview.classList.add('d-none');
}
function closeCamera(){
  if (stream) { stream.getTracks().forEach(t=>t.stop()); stream=null; }
  camVideo.classList.add('d-none');
  captureBtn.classList.add('d-none');
  closeCamBtn.classList.add('d-none');
  openCamBtn.classList.remove('d-none');
  camStatus.textContent = 'تم إغلاق الكاميرا.';
}
openCamBtn?.addEventListener('click', openCamera);
captureBtn?.addEventListener('click', captureFrame);
closeCamBtn?.addEventListener('click', closeCamera);

document.getElementById('productForm')?.addEventListener('submit', () => {
  // إيقاف الكاميرا قبل الإرسال لتجنب تعليق بعض أجهزة الموبايل
  if (stream) {
    stream.getTracks().forEach(t => t.stop());
    stream = null;
  }
});
</script>
</body>
</html>