UNPKG

phx-react

Version:

PHX REACT

65 lines 3.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = PHXGetListDepartmentManager; const tslib_1 = require("tslib"); const react_1 = require("react"); const getLoginInfo_1 = tslib_1.__importDefault(require("../getLoginInfo")); const PHXGrpcClientV3_1 = require("../GRPC/PHXGrpcClientV3"); const department_manager_1 = require("../../../query/department-manager"); function PHXGetListDepartmentManager() { const userInfo = (0, getLoginInfo_1.default)(); const [listDepartments, setListDepartments] = (0, react_1.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 (0, PHXGrpcClientV3_1.PHXClientQueryV3)({ query: department_manager_1.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 (0, PHXGrpcClientV3_1.PHXClientQueryV3)({ query: department_manager_1.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'); } }; (0, react_1.useEffect)(() => { fetchData(); }, []); return listDepartments; } //# sourceMappingURL=getListDepartmentManager.js.map