diff --git a/src/components/Project/AssignTask.jsx b/src/components/Project/AssignTask.jsx index 0d922c29..3fa9463d 100644 --- a/src/components/Project/AssignTask.jsx +++ b/src/components/Project/AssignTask.jsx @@ -48,6 +48,9 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => { const infoRef = useRef(null); const infoRef1 = useRef(null); + // State for search term + const [searchTerm, setSearchTerm] = useState(""); + useEffect(() => { if (typeof bootstrap !== "undefined") { if (infoRef.current) { @@ -129,12 +132,25 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => { setSelectedRole(event.target.value); }; - const filteredEmployees = - selectedRole === "all" - ? employees - : employees?.filter( - (emp) => String(emp.jobRoleId || "") === selectedRole - ); + const handleSearchChange = (event) => { + setSearchTerm(event.target.value); + }; + + // Filter employees first by role, then by search term AND job role name + const filteredEmployees = employees?.filter((emp) => { + const matchesRole = + selectedRole === "all" || String(emp.jobRoleId || "") === selectedRole; + + // Convert both first and last names and job role name to lowercase for case-insensitive matching + const fullName = `${emp.firstName} ${emp.lastName}`.toLowerCase(); + const jobRoleName = jobRoleData?.find((role) => role.id === emp.jobRoleId)?.name?.toLowerCase() || ""; + const searchLower = searchTerm.toLowerCase(); + + // Check if the full name OR job role name includes the search term + const matchesSearch = fullName.includes(searchLower) || jobRoleName.includes(searchLower); + + return matchesRole && matchesSearch; + }); const onSubmit = (data) => { const selectedEmployeeIds = data.selectedEmployees; @@ -159,6 +175,7 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => { reset(); onClose(); }; + return (
Assign Task
@@ -191,7 +208,7 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => {- No employees found for the selected role. + No employees found for the selected role or search term.