<?php
// ========================================
// مدیریت کاربران
// پروژه فروشگاه کیف‌لند
// ========================================
require_once '../config/database.php';
require_once '../config/settings.php';
require_once '../includes/auth.php';
require_once '../includes/functions.php';

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

$success = '';
$error = '';
$current_user_id = $_SESSION['user_id'] ?? 0;

// ========================================
// پردازش درخواست‌های POST
// ========================================
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // تغییر وضعیت فعال/غیرفعال
    if (isset($_POST['toggle_status'])) {
        $id = (int)($_POST['user_id'] ?? 0);
        if ($id == $current_user_id) {
            $error = 'نمی‌توانید وضعیت حساب خود را تغییر دهید.';
        } else {
            try {
                $db->prepare("UPDATE users SET is_active = NOT is_active, updated_at = NOW() WHERE id = ?")->execute([$id]);
                Auth::logActivity('user_status_toggle', "تغییر وضعیت کاربر #$id");
                $success = 'وضعیت کاربر با موفقیت تغییر کرد.';
            } catch (Exception $e) { $error = 'خطا در تغییر وضعیت: ' . $e->getMessage(); }
        }
    }
    // تغییر نقش کاربری
    elseif (isset($_POST['change_role'])) {
        $id = (int)($_POST['user_id'] ?? 0);
        $role = in_array($_POST['role'], ['admin', 'user', 'moderator']) ? $_POST['role'] : 'user';
        if ($id == $current_user_id && $role !== 'admin') {
            $error = 'نمی‌توانید نقش مدیریتی خود را حذف کنید.';
        } else {
            try {
                $db->prepare("UPDATE users SET role = ?, updated_at = NOW() WHERE id = ?")->execute([$role, $id]);
                Auth::logActivity('user_role_change', "تغییر نقش کاربر #$id به $role");
                $success = 'نقش کاربر با موفقیت تغییر کرد.';
            } catch (Exception $e) { $error = 'خطا در تغییر نقش: ' . $e->getMessage(); }
        }
    }
    // حذف کاربر
    elseif (isset($_POST['delete_id'])) {
        $id = (int)($_POST['delete_id'] ?? 0);
        if ($id == $current_user_id) {
            $error = 'نمی‌توانید حساب خود را حذف کنید.';
        } else {
            try {
                $db->prepare("DELETE FROM users WHERE id = ?")->execute([$id]);
                Auth::logActivity('user_delete', "حذف کاربر #$id");
                $success = 'کاربر با موفقیت حذف شد.';
            } catch (Exception $e) { $error = 'خطا در حذف کاربر: ' . $e->getMessage(); }
        }
    }
}

// ========================================
// فیلتر، جستجو و صفحه‌بندی
// ========================================
$search = trim($_GET['search'] ?? '');
$role_filter = $_GET['role'] ?? '';
$status_filter = $_GET['status'] ?? '';
$page = max(1, (int)($_GET['page'] ?? 1));
$per_page = 15;
$offset = ($page - 1) * $per_page;

$sql = "SELECT id, username, email, full_name, phone, role, is_active, created_at, last_login FROM users WHERE 1=1";
$params = [];

if ($search !== '') {
    $sql .= " AND (full_name LIKE ? OR email LIKE ? OR username LIKE ? OR phone LIKE ?)";
    $p = "%$search%";
    array_push($params, $p, $p, $p, $p);
}
if ($role_filter) {
    $sql .= " AND role = ?";
    $params[] = $role_filter;
}
if ($status_filter === 'active') {
    $sql .= " AND is_active = 1";
} elseif ($status_filter === 'inactive') {
    $sql .= " AND is_active = 0";
}

// شمارش کل برای صفحه‌بندی
$count_sql = preg_replace('/SELECT id, username, email, full_name, phone, role, is_active, created_at, last_login/', 'SELECT COUNT(*)', $sql);
$stmt_count = $db->prepare($count_sql);
$stmt_count->execute($params);
$total_users = $stmt_count->fetchColumn();
$total_pages = ceil($total_users / $per_page);

// دریافت داده‌ها
$sql .= " ORDER BY created_at DESC LIMIT ? OFFSET ?";
array_push($params, (int)$per_page, (int)$offset);

$stmt = $db->prepare($sql);
$stmt->execute($params);
$users = $stmt->fetchAll();

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

<style>
/* ========================================
   Users Page - Complete Internal CSS
   ======================================== */

/* Filters Bar */
.users-filters {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    align-items: flex-end;
    background: var(--glass-bg);
    backdrop-filter: blur(20px);
    padding: 16px;
    border-radius: var(--radius);
    border: 1px solid var(--glass-border);
    margin-bottom: 24px;
}

.filter-group {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 160px;
    flex: 1;
}

.filter-group label {
    font-size: 12px;
    font-weight: 600;
    color: var(--text-secondary);
    display: flex;
    align-items: center;
    gap: 6px;
}

.filter-group label i { opacity: 0.7; font-size: 11px; }

.filter-group select,
.filter-group input {
    padding: 10px 14px;
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-sm);
    background: var(--glass-bg-light);
    font-family: 'Vazirmatn', sans-serif;
    font-size: 13px;
    color: var(--text-primary);
    cursor: pointer;
    transition: all var(--transition-fast);
    min-height: 44px;
}

.filter-group select:hover,
.filter-group input:hover {
    background: var(--glass-hover);
    border-color: var(--primary);
}

.filter-group select:focus,
.filter-group input:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.15);
    background: #fff;
}

.filter-actions {
    display: flex;
    gap: 8px;
    align-items: center;
}

/* Table Styles */
.table-responsive {
    overflow-x: auto;
    border-radius: var(--radius-sm);
    -webkit-overflow-scrolling: touch;
    margin-bottom: 20px;
}

.data-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 800px;
}

.data-table thead th {
    text-align: right;
    padding: 14px 16px;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-secondary);
    background: rgba(255,255,255,0.3);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--glass-border);
    white-space: nowrap;
    position: sticky;
    top: 0;
    z-index: 5;
}

.data-table tbody td {
    padding: 12px 16px;
    font-size: 13px;
    color: var(--text-primary);
    border-bottom: 0.5px solid rgba(255,255,255,0.15);
    vertical-align: middle;
}

.data-table tbody tr {
    transition: background var(--transition-fast);
}

.data-table tbody tr:hover {
    background: rgba(255,255,255,0.25);
    backdrop-filter: blur(10px);
}

.data-table tbody tr.font-bold {
    font-weight: 600;
}

/* User Info Cell */
.user-cell {
    display: flex;
    align-items: center;
    gap: 10px;
}

.user-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--primary-light);
    color: var(--primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 14px;
    flex-shrink: 0;
    border: 1px solid var(--glass-border);
}

.user-details {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.user-name {
    font-weight: 600;
    color: var(--text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.user-email {
    font-size: 11px;
    color: var(--text-secondary);
    opacity: 0.8;
}

/* Inline Forms (Role & Status) */
.inline-form {
    display: inline-flex;
    align-items: center;
}

.role-select, .status-btn {
    padding: 6px 10px;
    border: 0.5px solid var(--glass-border);
    border-radius: 8px;
    background: var(--glass-bg);
    font-family: 'Vazirmatn', sans-serif;
    font-size: 11px;
    cursor: pointer;
    transition: all var(--transition-fast);
    color: var(--text-primary);
}

.role-select:focus, .status-btn:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 2px rgba(0,122,255,0.1);
}

.status-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    border: none;
    font-weight: 600;
    min-height: 28px;
}

.status-btn.active {
    background: rgba(52,199,89,0.15);
    color: var(--success);
}

.status-btn.inactive {
    background: rgba(108,117,125,0.15);
    color: var(--muted);
}

/* Action Buttons */
.action-btn-sm {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    border: none;
    background: rgba(255,255,255,0.3);
    cursor: pointer;
    transition: all var(--transition-fast);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text-secondary);
    font-size: 12px;
}

.action-btn-sm:hover {
    background: var(--glass-hover);
    transform: scale(1.05);
}

.action-btn-sm.edit:hover { color: var(--primary); background: var(--primary-light); }
.action-btn-sm.delete:hover { color: var(--danger); background: var(--danger-light); }

/* Pagination */
.pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-top: 20px;
    flex-wrap: wrap;
}

.page-link {
    min-width: 38px;
    height: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-sm);
    font-size: 13px;
    color: var(--text-primary);
    transition: all var(--transition-fast);
    text-decoration: none;
}

.page-link:hover {
    background: var(--glass-hover);
    border-color: var(--primary);
    color: var(--primary);
    transform: translateY(-1px);
}

.page-link.active {
    background: var(--primary);
    color: white;
    border-color: var(--primary);
    font-weight: 600;
}

/* Empty State */
.empty-state {
    text-align: center;
    padding: 40px 20px;
    background: var(--glass-bg);
    backdrop-filter: blur(20px);
    border-radius: var(--radius);
    border: 1px solid var(--glass-border);
    color: var(--text-secondary);
}

.empty-state i {
    font-size: 48px;
    opacity: 0.3;
    margin-bottom: 12px;
    display: block;
}
/* Action Buttons */
.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);
}
/* Responsive */
@media (max-width: 992px) {
    .users-filters {
        flex-direction: column;
        align-items: stretch;
    }
    .filter-group { width: 100%; }
    .filter-actions { justify-content: flex-end; margin-top: 8px; }
}

@media (max-width: 768px) {
    .data-table { min-width: 600px; }
    .user-avatar { width: 32px; height: 32px; font-size: 12px; }
    .action-btn-sm { width: 28px; height: 28px; }
}
</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" id="globalSearch" value="<?= htmlspecialchars($search) ?>" placeholder="جستجو در کاربران...">
        </div>
        <div class="header-actions">
            <a href="user-add.php" class="btn btn-primary btn-sm">
                <i class="fas fa-user-plus"></i>
                <span>کاربر جدید</span>
            </a>
        </div>
    </header>

    <div class="dashboard-content">
        <div class="page-title">
            <h1>مدیریت کاربران</h1>
            <p>بررسی، ویرایش و مدیریت حساب‌های کاربری</p>
        </div>

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

        <!-- فیلترها -->
        <form method="GET" class="users-filters">
            <div class="filter-group">
                <label><i class="fas fa-search"></i> جستجو</label>
                <input type="text" name="search" value="<?= htmlspecialchars($search) ?>" placeholder="نام، ایمیل یا تلفن...">
            </div>
            
            <div class="filter-group">
                <label><i class="fas fa-user-tag"></i> نقش</label>
                <select name="role">
                    <option value="">همه نقش‌ها</option>
                    <option value="user" <?= $role_filter == 'user' ? 'selected' : '' ?>>کاربر عادی</option>
                    <option value="moderator" <?= $role_filter == 'moderator' ? 'selected' : '' ?>>ناظر / پشتیبان</option>
                    <option value="admin" <?= $role_filter == 'admin' ? 'selected' : '' ?>>مدیر ارشد</option>
                </select>
            </div>
            
            <div class="filter-group">
                <label><i class="fas fa-toggle-on"></i> وضعیت</label>
                <select name="status">
                    <option value="">همه وضعیت‌ها</option>
                    <option value="active" <?= $status_filter == 'active' ? 'selected' : '' ?>>فعال</option>
                    <option value="inactive" <?= $status_filter == 'inactive' ? 'selected' : '' ?>>غیرفعال</option>
                </select>
            </div>
            
            <div class="filter-actions">
                <button type="submit" class="btn btn-primary btn-sm">
                    <i class="fas fa-filter"></i> اعمال
                </button>
                <a href="users.php" class="btn btn-ghost btn-sm">
                    <i class="fas fa-undo"></i> ریست
                </a>
            </div>
        </form>

        <!-- جدول کاربران -->
        <?php if (!empty($users)): ?>
        <div class="table-responsive">
            <table class="data-table">
                <thead>
                    <tr>
                        <th>کاربر</th>
                        <th>نقش</th>
                        <th>وضعیت</th>
                        <th>تاریخ عضویت</th>
                        <th style="width: 100px; text-align: center;">عملیات</th>
                    </tr>
                </thead>
                <tbody id="usersTableBody">
                    <?php foreach ($users as $user): ?>
                    <tr class="<?= $user['is_active'] ? '' : 'font-bold' ?>">
                        <td>
                            <div class="user-cell">
                                <div class="user-avatar">
                                    <?= strtoupper(mb_substr($user['full_name'] ?: $user['username'], 0, 1)) ?>
                                </div>
                                <div class="user-details">
                                    <span class="user-name"><?= htmlspecialchars($user['full_name'] ?: $user['username']) ?></span>
                                    <span class="user-email"><?= htmlspecialchars($user['email']) ?></span>
                                </div>
                            </div>
                        </td>
                        <td>
                            <form method="POST" class="inline-form">
                                <input type="hidden" name="user_id" value="<?= $user['id'] ?>">
                                <select name="role" class="role-select" onchange="if(confirm('آیا از تغییر نقش این کاربر مطمئن هستید؟')) this.form.submit(); else this.value='<?= $user['role'] ?>';">
                                    <option value="user" <?= $user['role']=='user'?'selected':'' ?>>کاربر</option>
                                    <option value="moderator" <?= $user['role']=='moderator'?'selected':'' ?>>ناظر</option>
                                    <option value="admin" <?= $user['role']=='admin'?'selected':'' ?>>مدیر</option>
                                </select>
                                <input type="hidden" name="change_role" value="1">
                            </form>
                        </td>
                        <td>
                            <form method="POST" class="inline-form">
                                <input type="hidden" name="user_id" value="<?= $user['id'] ?>">
                                <button type="submit" name="toggle_status" class="status-btn <?= $user['is_active'] ? 'active' : 'inactive' ?>">
                                    <i class="fas fa-<?= $user['is_active'] ? 'check' : 'ban' ?>"></i>
                                    <?= $user['is_active'] ? 'فعال' : 'غیرفعال' ?>
                                </button>
                                <input type="hidden" name="toggle_status" value="1">
                            </form>
                        </td>
                        <td style="color: var(--text-secondary); font-size: 12px;">
                            <?= jdate($user['created_at']) ?>
                        </td>
                        <td style="text-align: center;">
                            <div class="action-btn-sm edit" onclick="window.location.href='user-edit.php?id=<?= $user['id'] ?>'" title="ویرایش">
                                <i class="fas fa-pen"></i>
                            </div>
                            <form method="POST" style="display: inline;" onsubmit="return confirm('آیا از حذف دائمی این کاربر مطمئن هستید؟');">
                                <input type="hidden" name="delete_id" value="<?= $user['id'] ?>">
                                <button type="submit" class="action-btn-sm delete" title="حذف">
                                    <i class="fas fa-trash"></i>
                                </button>
                            </form>
                        </td>
                    </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>

        <!-- صفحه‌بندی -->
        <?php if ($total_pages > 1): ?>
        <div class="pagination">
            <?php if ($page > 1): ?>
            <a href="?<?= http_build_query(array_merge($_GET, ['page' => $page - 1])) ?>" class="page-link">
                <i class="fas fa-chevron-right"></i>
            </a>
            <?php endif; ?>
            
            <?php for ($i = 1; $i <= $total_pages; $i++): ?>
                <?php if ($i == 1 || $i == $total_pages || abs($page - $i) <= 2): ?>
                <a href="?<?= http_build_query(array_merge($_GET, ['page' => $i])) ?>" 
                   class="page-link <?= $i == $page ? 'active' : '' ?>">
                    <?= $i ?>
                </a>
                <?php elseif (abs($page - $i) == 3): ?>
                <span style="color: var(--text-muted); padding: 0 4px;">...</span>
                <?php endif; ?>
            <?php endfor; ?>
            
            <?php if ($page < $total_pages): ?>
            <a href="?<?= http_build_query(array_merge($_GET, ['page' => $page + 1])) ?>" class="page-link">
                <i class="fas fa-chevron-left"></i>
            </a>
            <?php endif; ?>
        </div>
        <?php endif; ?>

        <?php else: ?>
        <div class="empty-state">
            <i class="fas fa-users"></i>
            <h3>کاربری یافت نشد</h3>
            <p>هنوز کاربری ثبت‌نام نکرده یا با فیلترهای فعلی نتیجه‌ای وجود ندارد.</p>
        </div>
        <?php endif; ?>
    </div>
</main>

<script src="assets/js/script.js"></script>
<script>
// جستجوی زنده سمت کلاینت
document.getElementById('globalSearch')?.addEventListener('input', debounce(function(e) {
    const term = e.target.value.toLowerCase();
    const rows = document.querySelectorAll('#usersTableBody tr');
    rows.forEach(row => {
        const text = row.textContent.toLowerCase();
        row.style.display = text.includes(term) ? '' : 'none';
    });
}, 300));
</script>

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