diff --git a/worklenz-frontend/src/components/project-ratecard/ratecard-assignee-selector.tsx b/worklenz-frontend/src/components/project-ratecard/ratecard-assignee-selector.tsx index 175ad48e..dc2521d4 100644 --- a/worklenz-frontend/src/components/project-ratecard/ratecard-assignee-selector.tsx +++ b/worklenz-frontend/src/components/project-ratecard/ratecard-assignee-selector.tsx @@ -23,7 +23,8 @@ const RateCardAssigneeSelector = ({ onChange, selectedMemberIds = [], memberlist = [], -}: RateCardAssigneeSelectorProps) => { + assignedMembers = [], // New prop: List of all assigned member IDs across all job titles +}: RateCardAssigneeSelectorProps & { assignedMembers: string[] }) => { const membersInputRef = useRef(null); const [searchQuery, setSearchQuery] = useState(''); const [members, setMembers] = useState(memberlist); @@ -46,33 +47,39 @@ const RateCardAssigneeSelector = ({ /> {filteredMembers.length ? ( - filteredMembers.map((member) => ( - - onChange?.(member.id || '')} - /> - - {member.name} - - )) + filteredMembers.map((member) => { + const isAssignedToAnotherJobTitle = + assignedMembers.includes(member.id || '') && + !selectedMemberIds.includes(member.id || ''); // Check if the member is assigned elsewhere + + return ( + + onChange?.(member.id || '')} + /> + + {member.name} + + ); + }) ) : ( )} diff --git a/worklenz-frontend/src/pages/projects/projectView/finance/ratecard-tab/reatecard-table/ratecard-table.tsx b/worklenz-frontend/src/pages/projects/projectView/finance/ratecard-tab/reatecard-table/ratecard-table.tsx index 51818231..3a621f10 100644 --- a/worklenz-frontend/src/pages/projects/projectView/finance/ratecard-tab/reatecard-table/ratecard-table.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/finance/ratecard-tab/reatecard-table/ratecard-table.tsx @@ -191,6 +191,10 @@ const RatecardTable: React.FC = () => { } }; + const assignedMembers = roles + .flatMap((role) => role.members || []) + .filter((memberId, index, self) => self.indexOf(memberId) === index); + // Columns const columns: TableProps['columns'] = [ { @@ -267,6 +271,7 @@ const RatecardTable: React.FC = () => { selectedMemberIds={memberscol || []} onChange={(memberId) => handleMemberChange(memberId, index, record)} memberlist={members} + assignedMembers={assignedMembers} // Pass assigned members here />