fix
All checks were successful
Build And Deploy Main / build-and-deploy (push) Successful in 36s

This commit is contained in:
2026-03-16 16:22:38 -04:00
parent 118c765b61
commit 1500254db7
2 changed files with 33 additions and 2 deletions

View File

@@ -454,16 +454,22 @@ exports.saveExternalUserPermission = async (req, res) => {
external_user_id: externalUserId, external_user_id: externalUserId,
allow_site: allowSite allow_site: allowSite
}); });
const normalizedTitle = `${title || ""}`.trim();
const payload = { const payload = {
external_user_id: externalUserId, external_user_id: externalUserId,
allow_site: allowSite, allow_site: allowSite,
username, username,
name, name,
title,
email, email,
permissions, permissions,
edit_by: editorId edit_by: editorId
}; };
if (normalizedTitle) {
payload.title = normalizedTitle;
} else if (existing?.title) {
// Keep existing title when client does not provide one.
payload.title = existing.title;
}
if (!existing) { if (!existing) {
payload.create_by = editorId; payload.create_by = editorId;
} }

View File

@@ -18,6 +18,7 @@ const ExternalEmployeesImport = () => {
const [selectedEmployee, setSelectedEmployee] = useState(undefined); const [selectedEmployee, setSelectedEmployee] = useState(undefined);
const [selectedPermissions, setSelectedPermissions] = useState([SYSTEM_ACCESS_PERMISSION]); const [selectedPermissions, setSelectedPermissions] = useState([SYSTEM_ACCESS_PERMISSION]);
const [selectedAllowSite, setSelectedAllowSite] = useState(currentSite); const [selectedAllowSite, setSelectedAllowSite] = useState(currentSite);
const [existingPermissionMap, setExistingPermissionMap] = useState({});
useEffect(() => { useEffect(() => {
if (!AuthService.canAddOrEditEmployees()) { if (!AuthService.canAddOrEditEmployees()) {
@@ -27,8 +28,26 @@ const ExternalEmployeesImport = () => {
return; return;
} }
loadExternalEmployees(); loadExternalEmployees();
loadExistingPermissions();
}, []); }, []);
const loadExistingPermissions = () => {
EmployeeService.getExternalUserPermissionsList(currentSite)
.then((response) => {
const records = Array.isArray(response?.data) ? response.data : [];
const nextMap = {};
records.forEach((item) => {
const key = item?.external_user_id;
if (!key) return;
nextMap[key] = item;
});
setExistingPermissionMap(nextMap);
})
.catch(() => {
setExistingPermissionMap({});
});
};
const loadExternalEmployees = () => { const loadExternalEmployees = () => {
setLoading(true); setLoading(true);
EmployeeService.getExternalEmployeesList() EmployeeService.getExternalEmployeesList()
@@ -128,6 +147,7 @@ const ExternalEmployeesImport = () => {
permissions: selectedPermissions permissions: selectedPermissions
}) })
.then(() => { .then(() => {
loadExistingPermissions();
closePermissionModal(); closePermissionModal();
}) })
.catch((error) => { .catch((error) => {
@@ -202,12 +222,17 @@ const ExternalEmployeesImport = () => {
<td>{item?.title}</td> <td>{item?.title}</td>
<td>{item?.site}</td> <td>{item?.site}</td>
<td> <td>
{(() => {
const hasExistingPermission = !!existingPermissionMap?.[item?.employee_id];
return (
<button <button
className="btn btn-primary btn-sm" className="btn btn-primary btn-sm"
onClick={() => openPermissionModal(item)} onClick={() => openPermissionModal(item)}
> >
Add {hasExistingPermission ? "Edit" : "Add"}
</button> </button>
);
})()}
</td> </td>
</tr> </tr>
))} ))}