fix: assign member hanya intern yg gk ada active project

This commit is contained in:
Rafi Athallah
2026-06-27 18:12:42 +07:00
parent 8145b0afc0
commit ccf192a14d
5 changed files with 201 additions and 85 deletions
@@ -547,13 +547,30 @@ class ProjectService {
return error(new NotFoundError("User not found or inactive"));
}
if (user.role !== "intern") {
return error(
new ForbiddenError("Access denied: only interns can be assigned to projects")
);
}
const activeMemberships = await projectRepository.findActiveMembershipsByUserIds([id_user]);
if (activeMemberships.length > 0) {
const activeProj = activeMemberships[0].project;
if (activeMemberships[0].id_project === parseInt(id_project)) {
return error(new ConflictError("User is already an active member of this project"));
} else {
return error(
new ConflictError(
`User is already an active member of another project: ${activeProj?.project_name || "Unknown Project"}`
)
);
}
}
const existingMembership = await projectRepository.findMembership(id_project, id_user);
let membership;
if (existingMembership) {
if (existingMembership.status === 'active') {
return error(new ConflictError("User is already an active member of this project"));
}
membership = await projectRepository.updateMembershipStatus(existingMembership.id, 'active');
} else {
membership = await projectRepository.assignMember(id_project, id_user);