phx-react
Version:
PHX REACT
61 lines • 3.19 kB
JavaScript
import { useState, useEffect } from 'react';
import PHXFuncGetLoggedInfo from '../getLoginInfo';
import { PHXClientQueryV3 } from '../GRPC/PHXGrpcClientV3';
import { queryDepartmentByUserId, queryDepartmentIsManager } from '../../../query/department-manager';
export default function PHXGetListDepartmentManager() {
const userInfo = PHXFuncGetLoggedInfo();
const [listDepartments, setListDepartments] = useState();
const getResOfDepartment = (departmentInfo, user_id) => {
const departmentUsers = (departmentInfo === null || departmentInfo === void 0 ? void 0 : departmentInfo.department_users) || [];
// Danh sách ID nhân sự mình quản lý trực tiếp
let managedStaffIds = departmentUsers.filter((user) => user.user_manager_id === user_id).map((user) => user.user_id);
// Lấy thêm các cấp dưới của cấp dưới (gián tiếp 1 cấp)
const indirectStaffIds = departmentUsers
.filter((user) => managedStaffIds.includes(user.user_manager_id))
.map((user) => user.user_id);
// Gộp trực tiếp + gián tiếp
managedStaffIds = [...managedStaffIds, ...indirectStaffIds];
return {
...departmentInfo,
managedStaffIds,
};
};
const fetchData = async () => {
var _a, _b;
try {
const user_id = userInfo === null || userInfo === void 0 ? void 0 : userInfo.id;
const { data: listDepartmentByStaff } = await PHXClientQueryV3({
query: queryDepartmentByUserId,
variables: {
user_id,
},
});
// Danh sách phòng ban theo user
const listDepartmentByUser = ((_a = listDepartmentByStaff === null || listDepartmentByStaff === void 0 ? void 0 : listDepartmentByStaff.department_user) === null || _a === void 0 ? void 0 : _a.map((item) => getResOfDepartment(item.department, user_id))) || [];
const listId = listDepartmentByUser.map((item) => item.id);
if (listId.length > 0) {
const { data: resManager } = await PHXClientQueryV3({
query: queryDepartmentIsManager,
variables: {
department_manager_id: `{${listId.join(',')}}`,
},
});
// Lấy các phòng ban cấp dưới phòng ban đó
const allDepartmentIsManager = (_b = resManager === null || resManager === void 0 ? void 0 : resManager.find_department) === null || _b === void 0 ? void 0 : _b.map((item) => getResOfDepartment(item.department, user_id));
const listDepartmentFilter = [...listDepartmentByUser, ...allDepartmentIsManager];
setListDepartments(listDepartmentFilter);
}
else {
setListDepartments([]);
}
}
catch (err) {
console.log(err, 'Không lấy được danh sách phòng ban theo user_id');
}
};
useEffect(() => {
fetchData();
}, []);
return listDepartments;
}
//# sourceMappingURL=getListDepartmentManager.js.map