prepare("UPDATE users SET status = 'active' WHERE id = ? AND role = 'shipper'")->execute([$userId]); $flash = 'Shipper approved successfully.'; } elseif ($action === 'reject') { db()->prepare("UPDATE users SET status = 'rejected' WHERE id = ? AND role = 'shipper'")->execute([$userId]); $flash = 'Shipper rejected.'; } elseif ($action === 'delete') { db()->prepare("DELETE FROM shipper_profiles WHERE user_id = ?")->execute([$userId]); db()->prepare("DELETE FROM users WHERE id = ? AND role = 'shipper'")->execute([$userId]); $flash = 'Shipper deleted.'; } } // Search and Pagination parameters $q = trim($_GET['q'] ?? ''); $status = trim($_GET['status'] ?? ''); $page = max(1, (int)($_GET['page'] ?? 1)); $limit = 10; $offset = ($page - 1) * $limit; $whereClause = "u.role = 'shipper'"; $params = []; if ($q !== '') { $whereClause .= " AND (u.full_name LIKE ? OR u.email LIKE ? OR p.company_name LIKE ?)"; $likeQ = "%$q%"; $params = array_merge($params, [$likeQ, $likeQ, $likeQ]); } if ($status !== '' && in_array($status, ['active', 'pending', 'rejected'])) { $whereClause .= " AND u.status = ?"; $params[] = $status; } // Total count $countSql = " SELECT COUNT(*) FROM users u LEFT JOIN shipper_profiles p ON u.id = p.user_id WHERE $whereClause "; $stmt = db()->prepare($countSql); $stmt->execute($params); $total = (int)$stmt->fetchColumn(); $totalPages = (int)ceil($total / $limit); // Fetch shippers $sql = " SELECT u.id, u.email, u.full_name, u.status, u.created_at, p.company_name, p.phone, p.address_line, c.name_en AS country_name, ci.name_en AS city_name FROM users u LEFT JOIN shipper_profiles p ON u.id = p.user_id LEFT JOIN countries c ON p.country_id = c.id LEFT JOIN cities ci ON p.city_id = ci.id WHERE $whereClause ORDER BY u.created_at DESC LIMIT $limit OFFSET $offset "; $stmt = db()->prepare($sql); $stmt->execute($params); $shippers = $stmt->fetchAll(); render_header('Manage Shippers', 'admin', true); ?>
Manage registered shippers.
No shippers found matching your criteria.
No shippers registered yet.
| ID | Name / Company | Contact | Location | Status | Action |
|---|---|---|---|---|---|
| = e((string)$shipper['id']) ?> |
= e($shipper['full_name']) ?>
= e((string)$shipper['company_name']) ?>
|
= e((string)$shipper['phone']) ?>
|
= e((string)$shipper['city_name']) ?>, = e((string)$shipper['country_name']) ?> | Active Pending = e(ucfirst($shipper['status'] ?? 'unknown')) ?> |