<?php
// ========================================
// ویرایش محصول (نسخه نهایی و بدون خطا)
// پروژه فروشگاه کیف‌لند
// ========================================

// فعال‌سازی نمایش خطاها فقط برای دیباگ (در پروداکشن غیرفعال کنید)
error_reporting(E_ALL);
ini_set('display_errors', 1);

require_once '../config/database.php';
require_once '../config/settings.php';
require_once '../includes/auth.php';
require_once '../includes/functions.php';

// تعریف تابع slugify امن (بدون وابستگی به intl)
if (!function_exists('slugify')) {
    function slugify($text) {
        $persian = ['ا','آ','ب','پ','ت','ث','ج','چ','ح','خ','د','ذ','ر','ز','ژ','س','ش','ص','ض','ط','ظ','ع','غ','ف','ق','ک','گ','ل','م','ن','و','ه','ی','ء','ؤ','ئ'];
        $english = ['a','a','b','p','t','s','j','ch','h','kh','d','z','r','z','zh','s','sh','s','z','t','z','a','gh','f','gh','k','g','l','m','n','v','h','y','a','o','e'];
        $text = str_replace($persian, $english, $text);
        $text = preg_replace('/[^\w\s-]/u', '', $text);
        $text = preg_replace('/[\s_-]+/', '-', $text);
        $text = trim($text, '-');
        return strtolower($text) ?: 'product';
    }
}

Auth::requireAdmin();
$db = Database::getInstance()->getConnection();
$pageTitle = 'ویرایش محصول | کیف‌لند';

$error = '';
$success = '';

// دریافت شناسه محصول
$product_id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
if ($product_id <= 0) {
    header('Location: products.php?error=invalid_id');
    exit;
}

// دریافت اطلاعات محصول
$stmt = $db->prepare("SELECT * FROM products WHERE id = ?");
$stmt->execute([$product_id]);
$product = $stmt->fetch();

if (!$product) {
    header('Location: products.php?error=not_found');
    exit;
}

// دریافت دسته‌بندی‌ها
$categories_stmt = $db->query("SELECT id, name FROM categories ORDER BY name ASC");
$categories = $categories_stmt->fetchAll();

// مسیر مطلق آپلود (جلوگیری از خطای مسیر در هاست)
define('UPLOAD_DIR', __DIR__ . '/../uploads/products/');

// ========================================
// پردازش فرم (POST)
// ========================================
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    try {
        $name = trim($_POST['name'] ?? '');
        $description = trim($_POST['description'] ?? '');
        $price = (float)($_POST['price'] ?? 0);
        $discount_price   = $_POST['discount_price'] !== '' ? (float)$_POST['discount_price'] : 0;
        $flash_sale       = isset($_POST['flash_sale']) ? 1 : 0;
        $flash_sale_price = $_POST['flash_sale_price'] !== '' ? (float)$_POST['flash_sale_price'] : null;
        $flash_sale_start = !empty($_POST['flash_sale_start']) ? $_POST['flash_sale_start'] : null;
        $flash_sale_end   = !empty($_POST['flash_sale_end'])   ? $_POST['flash_sale_end']   : null;
        $stock = (int)($_POST['stock'] ?? 0);
        $category_id = (int)($_POST['category_id'] ?? 0);
        
        // ✅ رفع خطای SKU: تبدیل رشته خالی به NULL
        $sku_raw = trim($_POST['sku'] ?? '');
        $sku = ($sku_raw === '') ? null : $sku_raw;
        
        $is_active = isset($_POST['is_active']) ? 1 : 0;
        $remove_image = isset($_POST['remove_image']);

        // اعتبارسنجی پایه
        if (empty($name)) throw new Exception('نام محصول الزامی است.');
        if ($price <= 0) throw new Exception('قیمت باید بزرگتر از صفر باشد.');
        if ($category_id <= 0) throw new Exception('انتخاب دسته‌بندی الزامی است.');

        // ساخت پوشه آپلود اگر وجود نداشت
        if (!is_dir(UPLOAD_DIR)) {
            mkdir(UPLOAD_DIR, 0755, true);
        }

        // تولید اسلاگ هوشمند
        $base_slug = ($product['name'] === $name) ? $product['slug'] : slugify($name);
        if (empty($base_slug) || $base_slug === 'product') {
            $base_slug = 'product-' . $product_id;
        }

        // بررسی یکتایی اسلاگ در دیتابیس
        $final_slug = $base_slug;
        $counter = 1;
        while (true) {
            $check = $db->prepare("SELECT id FROM products WHERE slug = ? AND id != ?");
            $check->execute([$final_slug, $product_id]);
            if ($check->rowCount() === 0) break;
            $final_slug = $base_slug . '-' . $counter++;
        }

        // مدیریت تصویر
        $image_name = $product['image'];
        
        if ($remove_image && !empty($image_name)) {
            $old_path = UPLOAD_DIR . $image_name;
            if (file_exists($old_path)) unlink($old_path);
            $image_name = '';
        } elseif (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) {
            if (!empty($image_name) && file_exists(UPLOAD_DIR . $image_name)) {
                unlink(UPLOAD_DIR . $image_name);
            }
            
            $allowed = ['jpg', 'jpeg', 'png', 'webp'];
            $ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
            if (!in_array($ext, $allowed)) throw new Exception('فرمت تصویر مجاز نیست (jpg, png, webp).');
            
            $image_name = uniqid('prod_') . '.' . $ext;
            $upload_path = UPLOAD_DIR . $image_name;
            
            if (!move_uploaded_file($_FILES['image']['tmp_name'], $upload_path)) {
                throw new Exception('خطا در انتقال فایل. دسترسی پوشه uploads/products باید 755 باشد.');
            }
        } elseif (isset($_FILES['image']) && $_FILES['image']['error'] !== UPLOAD_ERR_NO_FILE) {
            $upload_errors = [1=>'حجم فایل از حد مجاز سرور بیشتر است', 2=>'حجم فایل از فرم بیشتر است', 3=>'آپلود ناقص بود', 4=>'فایلی انتخاب نشد', 6=>'پوشه موقت پیدا نشد', 7=>'خطای نوشتن روی دیسک', 8=>'افزونه PHP آپلود را متوقف کرد'];
            throw new Exception($upload_errors[$_FILES['image']['error']] ?? 'خطای ناشناخته در آپلود.');
        }

        // آپدیت دیتابیس
        $sql = "UPDATE products SET 
                name = ?, slug = ?, description = ?, price = ?, discount_price = ?, flash_sale = ?, flash_sale_price = ?, flash_sale_start = ?, flash_sale_end = ?, 
                stock = ?, category_id = ?, image = ?, sku = ?, is_active = ?, updated_at = NOW() 
                WHERE id = ?";
        
        $stmt = $db->prepare($sql);
        $stmt->execute([
            $name, $final_slug, $description, $price, $discount_price, $flash_sale, $flash_sale_price, $flash_sale_start, $flash_sale_end, 
            $stock, $category_id, $image_name, $sku, $is_active, $product_id
        ]);

        Auth::logActivity('product_edit', "ویرایش محصول: $name");
        header('Location: products.php?msg=updated');
        exit;

    } catch (Exception $e) {
        $error = $e->getMessage();
    }
}

include 'includes/admin-header.php';
?>

<style>
/* ========================================
   Product Edit Styles (Internal)
   ======================================== */
.form-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; flex-wrap: wrap; gap: 16px; }
.form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin-bottom: 24px; }
.form-group { display: flex; flex-direction: column; gap: 8px; }
.form-group.full-width { grid-column: span 2; }
.form-label { font-size: 13px; font-weight: 600; color: var(--text-primary); display: flex; align-items: center; gap: 6px; }
.form-label .required { color: var(--danger); }
.form-control { width: 100%; padding: 12px 14px; background: var(--glass-bg); backdrop-filter: blur(10px); border: 1px solid var(--glass-border); border-radius: var(--radius-sm); font-family: 'Vazirmatn', sans-serif; font-size: 14px; color: var(--text-primary); transition: all var(--transition-fast); min-height: 44px; }
.form-control:hover { background: var(--glass-hover); }
.form-control:focus { outline: none; background: #fff; border-color: var(--primary); box-shadow: 0 0 0 4px rgba(0, 122, 255, 0.15); }
textarea.form-control { min-height: 120px; resize: vertical; line-height: 1.6; }
.form-hint { font-size: 11px; color: var(--text-secondary); margin-top: 4px; }
.checkbox-wrapper { display: flex; align-items: center; gap: 10px; cursor: pointer; margin-top: 8px; }
.checkbox-wrapper input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--primary); cursor: pointer; }
.image-upload-area { display: flex; flex-direction: column; gap: 15px; }
.current-image-preview { position: relative; width: 100%; height: 200px; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--glass-border); background: var(--glass-bg); }
.current-image-preview img { width: 100%; height: 100%; object-fit: cover; }
.current-image-badge { position: absolute; top: 10px; right: 10px; background: rgba(0,0,0,0.6); color: white; padding: 4px 10px; border-radius: 20px; font-size: 11px; backdrop-filter: blur(4px); }
.file-upload-wrapper { position: relative; width: 100%; height: 120px; border: 2px dashed var(--glass-border); border-radius: var(--radius); background: var(--glass-bg); display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: pointer; transition: all var(--transition-fast); }
.file-upload-wrapper:hover { border-color: var(--primary); background: var(--glass-bg-light); }
.file-upload-wrapper input[type="file"] { position: absolute; width: 100%; height: 100%; opacity: 0; cursor: pointer; z-index: 2; }
.file-upload-content { text-align: center; pointer-events: none; z-index: 1; }
.file-upload-content i { font-size: 24px; color: var(--text-secondary); margin-bottom: 5px; }
.file-upload-content p { font-size: 12px; color: var(--text-secondary); margin: 0; }
.form-actions { display: flex; justify-content: flex-end; gap: 12px; padding-top: 20px; border-top: 1px solid var(--glass-border); margin-top: 20px; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 10px 24px; border-radius: var(--radius-sm); font-weight: 600; font-size: 14px; cursor: pointer; transition: all var(--transition-fast); border: none; min-height: 44px; font-family: 'Vazirmatn', sans-serif; text-decoration: none; }
.btn:active { transform: scale(0.98); } .btn:disabled { opacity: 0.5; cursor: not-allowed; }
.btn-primary { background: var(--primary); color: white; box-shadow: 0 4px 12px rgba(0, 122, 255, 0.25); }
.btn-primary:hover { background: var(--primary-hover); transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0, 122, 255, 0.35); }
.btn-ghost { background: transparent; color: var(--text-secondary); border: 1px solid var(--glass-border); }
.btn-ghost:hover { background: var(--glass-hover); color: var(--text-primary); border-color: var(--text-secondary); }
@media (max-width: 768px) { .form-grid { grid-template-columns: 1fr; } .form-group.full-width { grid-column: span 1; } .form-actions { flex-direction: column-reverse; } .form-actions .btn { width: 100%; } }
</style>

<main class="main-content">
    <header class="top-header">
        <button class="menu-toggle" id="menuToggle"><i class="fas fa-bars"></i></button>
        <div class="search-box"><i class="fas fa-search"></i><input type="text" placeholder="جستجو..."></div>
        <div class="header-actions">
            <a href="products.php" class="btn btn-ghost btn-sm"><i class="fas fa-arrow-right"></i><span>بازگشت به لیست</span></a>
        </div>
    </header>

    <div class="dashboard-content">
        <div class="form-header">
            <div class="page-title" style="margin: 0;">
                <h1>ویرایش محصول</h1>
                <p>تغییر اطلاعات "<?= htmlspecialchars($product['name']) ?>"</p>
            </div>
        </div>

        <?php if ($error): ?>
        <div class="alert alert-danger"><i class="fas fa-exclamation-circle"></i> <?= htmlspecialchars($error) ?></div>
        <?php endif; ?>

        <form method="POST" enctype="multipart/form-data">
            <div class="glass-card">
                <div class="form-grid">
                    
                    <div class="form-group">
                        <label class="form-label"><i class="fas fa-tag"></i> نام محصول <span class="required">*</span></label>
                        <input type="text" name="name" class="form-control" value="<?= htmlspecialchars($product['name']) ?>" required>
                    </div>

                    <div class="form-group">
                        <label class="form-label"><i class="fas fa-barcode"></i> کد محصول (SKU)</label>
                        <input type="text" name="sku" class="form-control" value="<?= htmlspecialchars($product['sku'] ?? '') ?>" placeholder="اختیاری">
                    </div>

                    <div class="form-group">
                        <label class="form-label"><i class="fas fa-folder"></i> دسته‌بندی <span class="required">*</span></label>
                        <select name="category_id" class="form-control" required>
                            <option value="0">انتخاب دسته‌بندی...</option>
                            <?php foreach ($categories as $cat): ?>
                            <option value="<?= $cat['id'] ?>" <?= $product['category_id'] == $cat['id'] ? 'selected' : '' ?>><?= htmlspecialchars($cat['name']) ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>

                    <div class="form-group">
                        <label class="form-label"><i class="fas fa-money-bill"></i> قیمت (تومان) <span class="required">*</span></label>
                        <input type="number" name="price" class="form-control" value="<?= $product['price'] ?>" required min="0">
                    </div>

                    <div class="form-group">
                        <label class="form-label"><i class="fas fa-percent"></i> قیمت با تخفیف</label>
                        <input type="number" name="discount_price" class="form-control" value="<?= $product['discount_price'] ?: '' ?>" min="0">
                    </div>

                    <!-- فلش سیل -->
                    <div class="form-section" style="margin-top:20px;background:rgba(239,68,68,0.05);border:1px solid rgba(239,68,68,0.2);border-radius:12px;padding:18px;">
                        <div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;">
                            <h4 style="margin:0;display:flex;align-items:center;gap:8px;font-size:15px;">
                                🔥 فلش سیل (تخفیف زماندار)
                            </h4>
                            <label style="display:flex;align-items:center;gap:8px;cursor:pointer;">
                                <span style="font-size:13px;">فعال</span>
                                <div class="toggle-wrap">
                                    <input type="checkbox" name="flash_sale" id="flashToggle" value="1"
                                           <?= !empty($product['flash_sale']) ? 'checked' : '' ?>
                                           onchange="toggleFlash(this.checked)">
                                    <span class="toggle-s"></span>
                                </div>
                            </label>
                        </div>
                        <div id="flashFields" style="display:<?= !empty($product['flash_sale']) ? 'block' : 'none' ?>;">
                            <div class="form-row" style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;">
                                <div class="form-group">
                                    <label class="form-label">قیمت فلش سیل (تومان)</label>
                                    <input type="number" name="flash_sale_price" class="form-control"
                                           value="<?= $product['flash_sale_price'] ?? '' ?>" min="0"
                                           placeholder="قیمت ویژه">
                                </div>
                                <div class="form-group">
                                    <label class="form-label">شروع فلش سیل</label>
                                    <input type="datetime-local" name="flash_sale_start" class="form-control"
                                           value="<?= !empty($product['flash_sale_start']) ? date('Y-m-d\TH:i', strtotime($product['flash_sale_start'])) : '' ?>">
                                </div>
                                <div class="form-group">
                                    <label class="form-label">پایان فلش سیل</label>
                                    <input type="datetime-local" name="flash_sale_end" class="form-control"
                                           value="<?= !empty($product['flash_sale_end']) ? date('Y-m-d\TH:i', strtotime($product['flash_sale_end'])) : '' ?>">
                                </div>
                            </div>
                            <?php if(!empty($product['flash_sale_end']) && strtotime($product['flash_sale_end']) > time()): ?>
                            <div style="margin-top:12px;background:rgba(239,68,68,0.1);border-radius:8px;padding:10px 14px;font-size:13px;color:#ef4444;display:flex;align-items:center;gap:8px;">
                                <i class="fas fa-clock"></i>
                                فلش سیل فعال است — <span id="countdown"></span> باقی مانده
                                <script>
                                (function(){
                                    const end = new Date('<?= $product['flash_sale_end'] ?>').getTime();
                                    const el  = document.getElementById('countdown');
                                    function update() {
                                        const diff = end - Date.now();
                                        if (diff <= 0) { el.textContent = 'پایان یافته'; return; }
                                        const h = Math.floor(diff/3600000);
                                        const m = Math.floor((diff%3600000)/60000);
                                        const s = Math.floor((diff%60000)/1000);
                                        el.textContent = h + ' ساعت و ' + m + ' دقیقه و ' + s + ' ثانیه';
                                        setTimeout(update, 1000);
                                    }
                                    update();
                                })();
                                </script>
                            </div>
                            <?php endif; ?>
                            <div style="margin-top:10px;font-size:12px;color:var(--text-secondary);">
                                <i class="fas fa-info-circle"></i>
                                قیمت فلش سیل فقط در بازه زمانی تعیین‌شده نمایش داده می‌شود و جایگزین قیمت تخفیف می‌شود.
                            </div>
                        </div>
                    </div>
                    <div style="display:none">
                    </div>

                    <div class="form-group">
                        <label class="form-label"><i class="fas fa-boxes"></i> موجودی انبار</label>
                        <input type="number" name="stock" class="form-control" value="<?= $product['stock'] ?>" min="0">
                    </div>

                    <div class="form-group full-width">
                        <label class="form-label"><i class="fas fa-align-left"></i> توضیحات محصول</label>
                        <textarea name="description" class="form-control"><?= htmlspecialchars($product['description']) ?></textarea>
                    </div>

                    <div class="form-group full-width">
                        <label class="form-label"><i class="fas fa-image"></i> تصویر محصول</label>
                        <div class="image-upload-area">
                            <div class="current-image-preview">
                                <?php if ($product['image'] && file_exists(UPLOAD_DIR . $product['image'])): ?>
                                    <img src="../uploads/products/<?= htmlspecialchars($product['image']) ?>" alt="Current Image">
                                    <span class="current-image-badge">تصویر فعلی</span>
                                <?php else: ?>
                                    <div style="display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);opacity:0.5;">
                                        <i class="fas fa-image" style="font-size:40px;"></i>
                                    </div>
                                <?php endif; ?>
                            </div>
                            <div class="file-upload-wrapper" id="dropZone">
                                <input type="file" name="image" id="imageInput" accept="image/*">
                                <div class="file-upload-content">
                                    <i class="fas fa-cloud-upload-alt"></i>
                                    <p>برای تغییر تصویر کلیک کنید</p>
                                </div>
                            </div>
                            <label class="checkbox-wrapper" style="color: var(--danger);">
                                <input type="checkbox" name="remove_image">
                                <span>حذف تصویر فعلی</span>
                            </label>
                        </div>
                    </div>

                    <div class="form-group full-width">
                        <label class="checkbox-wrapper">
                            <input type="checkbox" name="is_active" <?= $product['is_active'] ? 'checked' : '' ?>>
                            <span>محصول فعال باشد و در سایت نمایش داده شود.</span>
                        </label>
                    </div>

                </div>

                <div class="form-actions">
                    <button type="submit" class="btn btn-primary"><i class="fas fa-save"></i> ذخیره تغییرات</button>
                    <a href="products.php" class="btn btn-ghost"><i class="fas fa-times"></i> انصراف</a>
                </div>
            </div>
        </form>
    </div>
</main>

<script src="assets/js/script.js"></script>
<script>
    const imageInput = document.getElementById('imageInput');
    const dropZone = document.getElementById('dropZone');
    imageInput.addEventListener('change', function(e) {
        if (e.target.files[0]) {
            dropZone.style.borderColor = 'var(--success)';
            dropZone.style.background = 'var(--success-light)';
            dropZone.querySelector('p').textContent = e.target.files[0].name;
            dropZone.querySelector('i').className = 'fas fa-check-circle';
        }
    });
</script>


<style>
.toggle-wrap{position:relative;width:46px;height:24px;display:inline-block;}
.toggle-wrap input{display:none;}
.toggle-s{position:absolute;inset:0;background:rgba(255,255,255,0.15);border-radius:24px;cursor:pointer;transition:0.3s;border:1px solid var(--glass-border);}
.toggle-s:before{content:'';position:absolute;width:18px;height:18px;left:3px;top:2px;background:#fff;border-radius:50%;transition:0.3s;}
.toggle-wrap input:checked+.toggle-s{background:#ef4444;border-color:#ef4444;}
.toggle-wrap input:checked+.toggle-s:before{transform:translateX(22px);}
</style>
<script>
function toggleFlash(checked) {
    document.getElementById('flashFields').style.display = checked ? 'block' : 'none';
}
</script>

<?php include 'includes/admin-footer.php'; ?>