phx-react
Version:
PHX REACT
65 lines • 3.44 kB
JavaScript
;
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