phx-react
Version:
PHX REACT
93 lines • 5.62 kB
JavaScript
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