This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>
|
||||||
))}
|
))}
|
||||||
|
|||||||
Reference in New Issue
Block a user