feat(project-ratecard-member): ratecard member handle backend and frontend and all update fix bug

This commit is contained in:
shancds
2025-05-23 13:57:53 +05:30
parent 22d0fc7049
commit 659ede7fb5
5 changed files with 159 additions and 37 deletions

View File

@@ -7,6 +7,7 @@ import { useAppDispatch } from '../../../../../../hooks/useAppDispatch';
import { useTranslation } from 'react-i18next';
import { JobRoleType, IJobType, RatecardType } from '@/types/project/ratecard.types';
import {
assignMemberToRateCardRole,
deleteProjectRateCardRoleById,
fetchProjectRateCardRoles,
insertProjectRateCardRole,
@@ -150,27 +151,28 @@ const RatecardTable: React.FC = () => {
};
// Handle member change
const handleMemberChange = (memberId: string, rowIndex: number, record: JobRoleType) => {
if (!projectId && !memberId) return;
setRoles((prev) =>
prev.map((role, idx) => {
if (idx !== rowIndex) return role;
const members = Array.isArray(role.members) ? [...role.members] : [];
const memberIdx = members.indexOf(memberId);
if (memberIdx > -1) {
members.splice(memberIdx, 1); // Remove if exists
} else {
members.push(memberId); // Add if not exists
}
return { ...role, members };
})
);
// Log the required values
console.log({
project_id: projectId,
id: memberId,
project_rate_card_role_id: record.id,
});
const handleMemberChange = async (memberId: string, rowIndex: number, record: JobRoleType) => {
if (!projectId || !record.id) return; // Ensure required IDs are present
try {
const resultAction = await dispatch(
assignMemberToRateCardRole({
project_id: projectId,
member_id: memberId,
project_rate_card_role_id: record.id,
})
);
if (assignMemberToRateCardRole.fulfilled.match(resultAction)) {
const updatedMembers = resultAction.payload; // Array of member IDs
setRoles((prev) =>
prev.map((role, idx) => {
if (idx !== rowIndex) return role;
return { ...role, members: updatedMembers?.members || [] };
})
);
}
} catch (error) {
console.error('Error assigning member:', error);
}
};
// Columns