<?php
// modules/users.php
require_once '../includes/auth.php';
checkLogin();
if (!isAdmin()) { die("فقط مدیریت کل به این بخش دسترسی دارد."); }
require_once '../config/db.php';

$userId = $_SESSION['user_id'];
$msg = '';
$error = '';

// ==========================================
// ارتقای دیتابیس: افزودن مجوزهای اختصاصی به جدول user_prices
// ==========================================
try {
    $pdo->exec("ALTER TABLE user_prices ADD COLUMN IF NOT EXISTS allow_discount TINYINT(1) DEFAULT 0");
    $pdo->exec("ALTER TABLE user_prices ADD COLUMN IF NOT EXISTS allow_festival TINYINT(1) DEFAULT 0");
    $pdo->exec("ALTER TABLE user_prices ADD COLUMN IF NOT EXISTS allow_bonus TINYINT(1) DEFAULT 0");
} catch (PDOException $e) {}

// ۱. ساخت کاربر جدید
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] == 'add_user') {
    $newUsername = trim($_POST['username']);
    $newFullname = trim($_POST['fullname']);
    $newPassword = password_hash($_POST['password'], PASSWORD_DEFAULT);
    try {
        $stmt = $pdo->prepare("INSERT INTO users (username, fullname, password, role) VALUES (?, ?, ?, 'operator')");
        $stmt->execute([$newUsername, $newFullname, $newPassword]);
        $msg = "اپراتور جدید با موفقیت ساخته شد!";
    } catch(PDOException $e) {
        $error = "خطا: این نام کاربری قبلاً در سیستم ثبت شده است.";
    }
}

// ۲. تغییر رمز و یا نام نمایشی 
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] == 'change_user_password') {
    $targetUserId = (int)$_POST['target_user_id'];
    $newPass = $_POST['new_password'];
    $newFullname = trim($_POST['new_fullname']);
    if (empty($newPass)) {
        $stmt = $pdo->prepare("UPDATE users SET fullname = ? WHERE id = ?");
        $stmt->execute([$newFullname, $targetUserId]);
        $msg = "اطلاعات کاربر با موفقیت به‌روزرسانی شد.";
    } else {
        if (strlen($newPass) < 6) {
            $error = "رمز عبور جدید باید حداقل ۶ کاراکتر باشد.";
        } else {
            $hashedPass = password_hash($newPass, PASSWORD_DEFAULT);
            $stmt = $pdo->prepare("UPDATE users SET password = ?, fullname = ? WHERE id = ?");
            $stmt->execute([$hashedPass, $newFullname, $targetUserId]);
            $msg = "اطلاعات و رمز عبور با موفقیت به‌روزرسانی شد.";
        }
    }
}

// ۳. حذف کاربر
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] == 'delete_user') {
    $targetUserId = (int)$_POST['delete_user_id'];
    if ($targetUserId === $userId) {
        $error = "شما نمی‌توانید حساب کاربری خودتان را حذف کنید!";
    } else {
        $stmt = $pdo->prepare("DELETE FROM users WHERE id = ? AND role != 'admin'");
        $stmt->execute([$targetUserId]);
        if ($stmt->rowCount() > 0) { $msg = "حساب کاربر مورد نظر با موفقیت حذف شد."; } 
        else { $error = "حذف این کاربر امکان‌پذیر نیست."; }
    }
}

// ۴. ثبت قیمت اختصاصی (با سیستم مجوزهای پیشرفته)
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] == 'set_custom_price') {
    $targetUserId = (int)$_POST['target_user_id'];
    $planName = $_POST['plan_name'];
    $costPrice = (int)str_replace(',', '', $_POST['custom_cost_price']);
    $retailPrice = (int)str_replace(',', '', $_POST['custom_retail_price']);
    
    // دریافت وضعیت تیک‌ها
    $allowDiscount = isset($_POST['allow_discount']) ? 1 : 0;
    $allowFestival = isset($_POST['allow_festival']) ? 1 : 0;
    $allowBonus = isset($_POST['allow_bonus']) ? 1 : 0;

    if ($targetUserId > 0 && !empty($planName) && $costPrice > 0 && $retailPrice > 0) {
        $stmtCheck = $pdo->prepare("SELECT id FROM user_prices WHERE user_id = ? AND plan_name = ?");
        $stmtCheck->execute([$targetUserId, $planName]);
        if ($stmtCheck->rowCount() > 0) {
            $pdo->prepare("UPDATE user_prices SET custom_cost_price = ?, custom_retail_price = ?, allow_discount = ?, allow_festival = ?, allow_bonus = ? WHERE user_id = ? AND plan_name = ?")
                ->execute([$costPrice, $retailPrice, $allowDiscount, $allowFestival, $allowBonus, $targetUserId, $planName]);
        } else {
            $pdo->prepare("INSERT INTO user_prices (user_id, plan_name, custom_cost_price, custom_retail_price, allow_discount, allow_festival, allow_bonus) VALUES (?, ?, ?, ?, ?, ?, ?)")
                ->execute([$targetUserId, $planName, $costPrice, $retailPrice, $allowDiscount, $allowFestival, $allowBonus]);
        }
        $msg = "تعرفه‌ی اختصاصی و سطح دسترسی با موفقیت ثبت/بروزرسانی شد.";
    } else {
        $error = "لطفاً تمام مقادیر را به درستی وارد کنید.";
    }
}

// ۵. حذف قیمت اختصاصی
if (isset($_GET['delete_price'])) {
    $priceId = (int)$_GET['delete_price'];
    $pdo->prepare("DELETE FROM user_prices WHERE id = ?")->execute([$priceId]);
    header("Location: users.php");
    exit;
}

// ۶. ورود مستقیم به عنوان کاربر
if (isset($_GET['login_as']) && isAdmin()) {
    $targetId = (int)$_GET['login_as'];
    $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
    $stmt->execute([$targetId]);
    $targetUser = $stmt->fetch();
    if ($targetUser) {
        $_SESSION['user_id'] = $targetUser['id'];
        $_SESSION['username'] = $targetUser['username'];
        $_SESSION['fullname'] = $targetUser['fullname'];
        $_SESSION['role'] = $targetUser['role'];
        header("Location: dashboard.php");
        exit;
    }
}

// واکشی اطلاعات
$users = $pdo->query("SELECT * FROM users ORDER BY id ASC")->fetchAll();
$plansList = $pdo->query("SELECT plan_name FROM plans ORDER BY id ASC")->fetchAll(PDO::FETCH_COLUMN);
$customPrices = $pdo->query("SELECT up.*, u.username, u.fullname FROM user_prices up JOIN users u ON up.user_id = u.id ORDER BY up.id DESC")->fetchAll();

require_once '../includes/header.php';
?>

<?php if($msg): ?><div class="bg-green-100 border border-green-400 text-green-700 px-4 py-3 rounded-xl mb-6 font-bold shadow-sm">✅ <?php echo $msg; ?></div><?php endif; ?>
<?php if($error): ?><div class="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded-xl mb-6 font-bold shadow-sm">❌ <?php echo $error; ?></div><?php endif; ?>

<div class="grid grid-cols-1 xl:grid-cols-3 gap-6 mb-8">
    <div class="space-y-6">
        <!-- فرم‌های ایجاد و ویرایش کاربر ... (تغییری نکرده‌اند) -->
        <div class="bg-white rounded-3xl shadow-sm border border-gray-100 p-6 border-t-8 border-t-green-500">
            <h2 class="text-lg font-bold mb-4 text-gray-800">ایجاد اپراتور جدید</h2>
            <form method="POST">
                <input type="hidden" name="action" value="add_user">
                <div class="mb-4">
                    <label class="block text-sm mb-1 font-bold text-gray-600">نام نمایشی (فارسی)</label>
                    <input type="text" name="fullname" required class="w-full border-2 border-gray-200 rounded-xl p-2.5 outline-none focus:border-green-500">
                </div>
                <div class="mb-4">
                    <label class="block text-sm mb-1 font-bold text-gray-600">نام کاربری (انگلیسی)</label>
                    <input type="text" name="username" required class="w-full border-2 border-gray-200 rounded-xl p-2.5 outline-none focus:border-green-500 bg-gray-50 font-mono" dir="ltr">
                </div>
                <div class="mb-4">
                    <label class="block text-sm mb-1 font-bold text-gray-600">رمز عبور اولیه</label>
                    <input type="password" name="password" required class="w-full border-2 border-gray-200 rounded-xl p-2.5 outline-none focus:border-green-500 bg-gray-50 font-mono" dir="ltr">
                </div>
                <button type="submit" class="w-full bg-green-600 text-white py-3 rounded-xl font-bold hover:bg-green-700 shadow transition">➕ ایجاد</button>
            </form>
        </div>

        <div class="bg-white rounded-3xl shadow-sm border border-gray-100 p-6 border-t-8 border-t-amber-500">
            <h2 class="text-lg font-bold mb-4 text-gray-800">ویرایش اطلاعات</h2>
            <form method="POST">
                <input type="hidden" name="action" value="change_user_password">
                <div class="mb-4">
                    <label class="block text-sm mb-1 font-bold text-gray-600">انتخاب کاربر</label>
                    <select name="target_user_id" id="editSelectUser" onchange="fillEditForm()" required class="w-full border-2 border-gray-200 rounded-xl p-2.5 outline-none focus:border-amber-500">
                        <option value="">-- انتخاب --</option>
                        <?php foreach($users as $u): ?>
                            <option value="<?php echo $u['id']; ?>" data-fullname="<?php echo htmlspecialchars($u['fullname']); ?>">
                                <?php echo !empty($u['fullname']) ? htmlspecialchars($u['fullname']) : $u['username']; ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                <div class="mb-4">
                    <label class="block text-sm mb-1 font-bold text-gray-600">تغییر نام فارسی</label>
                    <input type="text" name="new_fullname" id="editFullname" class="w-full border-2 border-gray-200 rounded-xl p-2.5 outline-none focus:border-amber-500">
                </div>
                <div class="mb-4">
                    <label class="block text-sm mb-1 font-bold text-gray-600">رمز جدید (خالی=بدون تغییر)</label>
                    <input type="text" name="new_password" class="w-full border-2 border-gray-200 rounded-xl p-2.5 outline-none focus:border-amber-500 font-mono" dir="ltr">
                </div>
                <button type="submit" class="w-full bg-amber-500 text-white py-3 rounded-xl font-bold hover:bg-amber-600 shadow transition">💾 ذخیره</button>
            </form>
        </div>

        <!-- فرم ثبت تعرفه اختصاصی با گزینه‌های جدید -->
        <div class="bg-white rounded-3xl shadow-sm border border-gray-100 p-6 border-t-8 border-t-purple-500">
            <h2 class="text-lg font-bold mb-4 text-gray-800 flex items-center gap-2"><span class="text-purple-600">💎</span> تعرفه اختصاصی نماینده</h2>
            <form method="POST">
                <input type="hidden" name="action" value="set_custom_price">
                <div class="mb-4">
                    <label class="block text-sm mb-1 font-bold text-gray-600">انتخاب نماینده</label>
                    <select name="target_user_id" required class="w-full border-2 border-gray-200 rounded-xl p-2.5 outline-none focus:border-purple-500">
                        <option value="">-- انتخاب کنید --</option>
                        <?php foreach($users as $u): if($u['role'] != 'admin'): ?>
                            <option value="<?php echo $u['id']; ?>"><?php echo !empty($u['fullname']) ? htmlspecialchars($u['fullname']) : $u['username']; ?></option>
                        <?php endif; endforeach; ?>
                    </select>
                </div>
                <div class="mb-4">
                    <label class="block text-sm mb-1 font-bold text-gray-600">انتخاب طرح</label>
                    <select name="plan_name" required class="w-full border-2 border-gray-200 rounded-xl p-2.5 outline-none focus:border-purple-500">
                        <?php foreach($plansList as $plan): ?>
                            <option value="<?php echo $plan; ?>"><?php echo htmlspecialchars($plan); ?></option>
                        <?php endforeach; ?>
                    </select>
                </div>
                <div class="grid grid-cols-2 gap-4 mb-4">
                    <div>
                        <label class="block text-xs mb-1 font-bold text-gray-600">خرید نماینده / گیگ</label>
                        <input type="text" name="custom_cost_price" required class="w-full border-2 border-gray-200 rounded-xl p-2.5 outline-none focus:border-purple-500 text-sm font-mono text-purple-700" dir="ltr" onkeyup="formatCurrency(this)">
                    </div>
                    <div>
                        <label class="block text-xs mb-1 font-bold text-gray-600">فروش مشتری / گیگ</label>
                        <input type="text" name="custom_retail_price" required class="w-full border-2 border-gray-200 rounded-xl p-2.5 outline-none focus:border-purple-500 text-sm font-mono text-blue-700" dir="ltr" onkeyup="formatCurrency(this)">
                    </div>
                </div>

                <div class="mb-6 bg-purple-50 p-4 rounded-xl border border-purple-100">
                    <p class="text-[11px] font-bold text-purple-800 mb-3 leading-relaxed">
                        ⚠️ به دلیل اختصاص قیمت ویژه، این نماینده به صورت پیش‌فرض از طرح‌های تشویقی حذف می‌شود. در صورت تمایل موارد زیر را مجاز کنید:
                    </p>
                    <div class="space-y-3">
                        <label class="flex items-center gap-2 text-xs font-bold text-gray-700 cursor-pointer">
                            <input type="checkbox" name="allow_discount" value="1" class="w-4 h-4 text-purple-600 rounded">
                            مجاز به استفاده از تخفیف‌های ثابت فروشگاه
                        </label>
                        <label class="flex items-center gap-2 text-xs font-bold text-gray-700 cursor-pointer">
                            <input type="checkbox" name="allow_festival" value="1" class="w-4 h-4 text-purple-600 rounded">
                            مجاز به شرکت در جشنواره‌ها (نمایش تایمر)
                        </label>
                        <label class="flex items-center gap-2 text-xs font-bold text-gray-700 cursor-pointer">
                            <input type="checkbox" name="allow_bonus" value="1" class="w-4 h-4 text-purple-600 rounded">
                            مجاز به دریافت بونوس در هنگام شارژ کیف پول
                        </label>
                    </div>
                </div>

                <button type="submit" class="w-full bg-purple-600 text-white py-3 rounded-xl font-bold hover:bg-purple-700 shadow transition">ثبت تعرفه و دسترسی‌ها</button>
            </form>
        </div>
    </div>

    <!-- ستون لیست‌ها -->
    <div class="xl:col-span-2 space-y-6">
        <!-- لیست کاربران (بدون تغییر) -->
        <div class="bg-white rounded-3xl shadow-sm border border-gray-100 p-8">
            <h2 class="text-xl font-bold mb-6 text-gray-800 flex items-center gap-2"><span class="w-2 h-6 bg-blue-600 rounded-full"></span> افراد دسترسی‌دار</h2>
            <div class="overflow-x-auto">
                <!-- ساختار جدول کاربران مشابه قبل -->
                <table class="w-full text-sm text-right text-gray-500">
                    <thead class="bg-gray-50 text-gray-700 border-b border-gray-200">
                        <tr>
                            <th class="px-4 py-4">مشخصات</th>
                            <th class="px-4 py-4">یوزرنیم</th>
                            <th class="px-4 py-4">دسترسی</th>
                            <th class="px-4 py-4 text-center">عملیات</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach($users as $u): ?>
                        <tr class="border-b hover:bg-gray-50 transition">
                            <td class="px-4 py-4 text-gray-800 font-black"><?php echo !empty($u['fullname']) ? htmlspecialchars($u['fullname']) : '-'; ?></td>
                            <td class="px-4 py-4 font-mono text-blue-600" dir="ltr"><?php echo htmlspecialchars($u['username']); ?></td>
                            <td class="px-4 py-4"><?php echo $u['role'] == 'admin' ? 'مدیر' : 'اپراتور'; ?></td>
                            <td class="px-4 py-4 text-center">
                                <?php if($u['id'] != $userId): ?>
                                    <a href="?login_as=<?php echo $u['id']; ?>" class="bg-blue-600 text-white px-3 py-1 rounded-md text-xs">ورود</a>
                                    <?php if($u['role'] != 'admin'): ?>
                                        <form method="POST" class="inline" onsubmit="return confirm('حذف؟');">
                                            <input type="hidden" name="action" value="delete_user"><input type="hidden" name="delete_user_id" value="<?php echo $u['id']; ?>">
                                            <button type="submit" class="bg-red-50 text-red-600 px-3 py-1 rounded-md text-xs">حذف</button>
                                        </form>
                                    <?php endif; ?>
                                <?php endif; ?>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        </div>

        <!-- لیست قیمت‌های اختصاصی (با نمایش مجوزها) -->
        <div class="bg-white rounded-3xl shadow-sm border border-gray-100 p-8 border-t-8 border-t-purple-500">
            <h2 class="text-xl font-bold mb-6 text-gray-800 flex items-center gap-2"><span class="w-2 h-6 bg-purple-600 rounded-full"></span> لیست تعرفه‌های اختصاصی</h2>
            <div class="overflow-x-auto">
                <table class="w-full text-sm text-right text-gray-500">
                    <thead class="bg-purple-50 text-purple-800 border-b border-purple-100">
                        <tr>
                            <th class="px-4 py-3">نماینده</th>
                            <th class="px-4 py-3">طرح</th>
                            <th class="px-4 py-3">قیمت‌ها</th>
                            <th class="px-4 py-3">دسترسی‌ها (تخفیف/تایمر/بونوس)</th>
                            <th class="px-4 py-3 text-center">عملیات</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php if(empty($customPrices)): ?>
                            <tr><td colspan="5" class="text-center py-4 text-gray-400">هیچ تعرفه اختصاصی ثبت نشده است.</td></tr>
                        <?php else: foreach($customPrices as $cp): 
                            $displayName = !empty($cp['fullname']) ? htmlspecialchars($cp['fullname']) : htmlspecialchars($cp['username']);
                        ?>
                        <tr class="border-b border-gray-50 hover:bg-gray-50 transition">
                            <td class="px-4 py-3 font-bold text-gray-800"><?php echo $displayName; ?></td>
                            <td class="px-4 py-3 font-bold text-gray-600"><?php echo htmlspecialchars($cp['plan_name']); ?></td>
                            <td class="px-4 py-3 font-mono text-xs" dir="ltr">
                                خ: <span class="text-purple-600 font-bold"><?php echo number_format($cp['custom_cost_price']); ?></span><br>
                                ف: <span class="text-blue-600 font-bold"><?php echo number_format($cp['custom_retail_price']); ?></span>
                            </td>
                            <td class="px-4 py-3 flex gap-1 items-center flex-wrap">
                                <?php echo $cp['allow_discount'] ? '<span class="bg-emerald-100 text-emerald-700 px-2 py-1 rounded text-[10px] font-bold">تخفیف ✓</span>' : '<span class="bg-rose-100 text-rose-700 px-2 py-1 rounded text-[10px] font-bold">تخفیف ✗</span>'; ?>
                                <?php echo $cp['allow_festival'] ? '<span class="bg-emerald-100 text-emerald-700 px-2 py-1 rounded text-[10px] font-bold">جشنواره ✓</span>' : '<span class="bg-rose-100 text-rose-700 px-2 py-1 rounded text-[10px] font-bold">جشنواره ✗</span>'; ?>
                                <?php echo $cp['allow_bonus'] ? '<span class="bg-emerald-100 text-emerald-700 px-2 py-1 rounded text-[10px] font-bold">بونوس ✓</span>' : '<span class="bg-rose-100 text-rose-700 px-2 py-1 rounded text-[10px] font-bold">بونوس ✗</span>'; ?>
                            </td>
                            <td class="px-4 py-3 text-center">
                                <a href="?delete_price=<?php echo $cp['id']; ?>" onclick="return confirm('حذف این تعرفه؟');" class="text-red-500 text-xs font-bold bg-red-50 px-2.5 py-1 rounded-md hover:bg-red-100">حذف</a>
                            </td>
                        </tr>
                        <?php endforeach; endif; ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

<script>
function fillEditForm() {
    var select = document.getElementById('editSelectUser');
    var selectedOption = select.options[select.selectedIndex];
    var fullname = selectedOption.getAttribute('data-fullname');
    document.getElementById('editFullname').value = fullname ? fullname : '';
}
function formatCurrency(input) {
    let value = input.value.replace(/,/g, '').replace(/\D/g, '');
    if (value) input.value = Number(value).toLocaleString('en-US');
    else input.value = '';
}
</script>

<?php require_once '../includes/footer.php'; ?>