UNPKG

phx-react

Version:

PHX REACT

93 lines 5.62 kB
import { PHXClientQueryV3 } from '../GRPC/PHXGrpcClientV3'; import { queryUserManageOfUserLevelFirst, queryUserManageOfUserLevelSecond } from '../../../query/department-manager'; import PHXFuncGetLoggedInfo from '../getLoginInfo'; export default async function PHXGetUserManagerByUserId({ isGetMaster, userId, }) { var _a, _b, _c, _d, _e, _f, _g; try { const userInfo = PHXFuncGetLoggedInfo(); // Id của người tạo đơn const userLoginId = userInfo === null || userInfo === void 0 ? void 0 : userInfo.id; // Kiểm tra xem người tạo đơn có phải trưởng phòng hay không const { data: { department_user: department_user_login }, } = await PHXClientQueryV3({ query: queryUserManageOfUserLevelFirst, variables: { user_id: userLoginId }, }); const isTruongPhong = department_user_login && department_user_login.some((item) => !item.user_manager_id); // Dựa vào userId truyền vào (Không cần biết cấp nào) gọi xem người quản lý là ai const { data: { department_user: department_user_lv_1 }, } = await PHXClientQueryV3({ query: queryUserManageOfUserLevelFirst, variables: { user_id: userId }, }); const userManagerLv1 = department_user_lv_1 === null || department_user_lv_1 === void 0 ? void 0 : department_user_lv_1.find((u) => (u === null || u === void 0 ? void 0 : u.user_manager_id) != null); // Nếu tìm thấy người quản lý sẽ return luôn vì ở trong phòng ban thì sẽ k có role master if (userManagerLv1) { const userInfo = userManagerLv1.userByUserManagerId || {}; // Khi tìm thấy người quản lý, check thêm người quản lý đó có phảo lãnh đạo hoặc trưởng phòng hay k // Phục vụ cho việc skip cấp duyệt teamlead const listDepartmentManagers = (_a = userInfo.department_users) !== null && _a !== void 0 ? _a : []; // Danh sách phòng ban quản lý const isSkip = listDepartmentManagers.some((departmentItem) => departmentItem.department_id === userManagerLv1.department_id && departmentItem.user_manager_id); return { user_id: (_b = userManagerLv1.user_manager_id) !== null && _b !== void 0 ? _b : null, user_name: userInfo.full_name, email: userInfo.is_use_email_secondary ? userInfo.email_secondary : userInfo.email, is_skip: isSkip, }; } // Nếu không tìm thấy người quản lý. đi tìm bên ngoài phòng ban của mình xem có user nào hay không const { data: { department_user: department_user_lv_2 }, } = await PHXClientQueryV3({ query: queryUserManageOfUserLevelSecond, variables: { user_id: userId }, }); // Tìm xem có phần tử cha của mình ở bên ngoài hay không const userManagerLv2 = ((_f = (_e = (_d = (_c = department_user_lv_2 === null || department_user_lv_2 === void 0 ? void 0 : department_user_lv_2[0]) === null || _c === void 0 ? void 0 : _c.department) === null || _d === void 0 ? void 0 : _d.department) === null || _e === void 0 ? void 0 : _e.department_users) === null || _f === void 0 ? void 0 : _f[0]) || {}; // Lấy danh sách role của người quản lý const listRoleOfManager = ((_g = userManagerLv2 === null || userManagerLv2 === void 0 ? void 0 : userManagerLv2.user) === null || _g === void 0 ? void 0 : _g.user_roles) || []; const userManagerIdLv2 = userManagerLv2 === null || userManagerLv2 === void 0 ? void 0 : userManagerLv2.user_id; if (!userManagerIdLv2) return null; const userLv2Info = (userManagerLv2 === null || userManagerLv2 === void 0 ? void 0 : userManagerLv2.user) || {}; const userNameManagerLv2 = userLv2Info.full_name; const email = userLv2Info.is_use_email_secondary ? userLv2Info.email_secondary : userLv2Info.email; // check xem người tạo đơn có phải trưởng phòng hay ko const isHasRoleMaster = listRoleOfManager.some((roleItem) => roleItem.role.is_master_role); if (isTruongPhong) { // Nếu người tạo đơn là trưởng phòng thì auto sẽ trả về nhé return { user_id: userManagerIdLv2, stop: isHasRoleMaster, // Nếu là master thì sẽ stop luôn user_name: userNameManagerLv2, email, is_skip: false, }; } else { // Nếu là nhân viên call đến cấp duyệt trên của a Chiến if (isHasRoleMaster) { return isGetMaster ? { user_id: userManagerIdLv2, stop: true, user_name: userNameManagerLv2, email, is_skip: false, } : null; } else { // Nếu cấp trên của Sếp không phải master thì vẫn được phép call return { user_id: userManagerIdLv2, stop: false, user_name: userNameManagerLv2, email, is_skip: false, }; } } } catch (error) { console.log(error, 'error'); return null; } } //# sourceMappingURL=getUserManagerByUserIdHandler.js.map