Access Denied. You do not have permission to manage shippers.
'; render_footer(); exit; } // Handle action (Approve / Reject / Delete if necessary) if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'], $_POST['user_id'])) { $userId = (int)$_POST['user_id']; $action = $_POST['action']; if ($action === 'approve') { db()->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); ?>

Shippers

Manage registered shippers.

No shippers found matching your criteria.

No shippers registered yet.

ID Name / Company Contact Location Status Action
, Active Pending
1): ?>
Showing of shippers