From cdfc37c27359db834aacbc97e33a6cd02e1511f8 Mon Sep 17 00:00:00 2001 From: RKWojs Date: Thu, 9 Oct 2025 14:55:11 +0200 Subject: [PATCH] feat: add 'can_be_assigned' field to users with updates to user creation, retrieval, and assignment queries --- src/app/admin/users/page.js | 57 ++++++++++++++++++++++++++++++++++++- src/lib/queries/projects.js | 2 +- src/lib/queries/tasks.js | 2 +- src/lib/userManagement.js | 21 ++++++++------ 4 files changed, 71 insertions(+), 11 deletions(-) diff --git a/src/app/admin/users/page.js b/src/app/admin/users/page.js index ac5edb0..9c9f15c 100644 --- a/src/app/admin/users/page.js +++ b/src/app/admin/users/page.js @@ -97,6 +97,30 @@ export default function UserManagementPage() { } }; + const handleToggleAssignable = async (userId, canBeAssigned) => { + try { + const response = await fetch(`/api/admin/users/${userId}`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ can_be_assigned: !canBeAssigned }), + }); + + if (!response.ok) { + throw new Error("Failed to update user"); + } + + setUsers(users.map(user => + user.id === userId + ? { ...user, can_be_assigned: !canBeAssigned } + : user + )); + } catch (err) { + setError(err.message); + } + }; + const getRoleColor = (role) => { switch (role) { case "admin": @@ -207,6 +231,9 @@ export default function UserManagementPage() { {user.is_active ? "Active" : "Inactive"} + + {user.can_be_assigned ? "Assignable" : "Not Assignable"} + @@ -237,6 +264,20 @@ export default function UserManagementPage() { )}
+
+
+ handleToggleAssignable(user.id, user.can_be_assigned)} + className="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" + /> + +
+
+
+ setFormData({ ...formData, can_be_assigned: e.target.checked })} + className="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" + /> + +
+