UNPKG

phx-react

Version:

PHX REACT

61 lines 3.19 kB
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