UNPKG

phx-node

Version:

PHX NODE

96 lines 5.38 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PHXGetListDepartmentManager = void 0; const common_1 = require("@nestjs/common"); const grpc_client_system_service_1 = require("../grpc-client/grpc-client-system.service"); const query_1 = require("../../query/department-manager/query"); let PHXGetListDepartmentManager = class PHXGetListDepartmentManager { constructor(grpcClientSystemService) { this.grpcClientSystemService = grpcClientSystemService; } getResOfDepartment(departmentInfo, user_id) { var _a; const departmentUsers = (_a = departmentInfo === null || departmentInfo === void 0 ? void 0 : departmentInfo.department_users) !== null && _a !== void 0 ? _a : []; // 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 Object.assign(Object.assign({}, departmentInfo), { managedStaffIds }); } getDepartmentByUser(payload) { return __awaiter(this, void 0, void 0, function* () { const { user_id, hostname } = payload; const resDepartment = (yield this.grpcClientSystemService.query({ query: query_1.queryDepartmentByUserId, variables: { user_id }, hostname, })); const { department_user } = resDepartment; // Danh sách phòng ban theo user const listDepartmentByUser = (department_user === null || department_user === void 0 ? void 0 : department_user.map((item) => this.getResOfDepartment(item.department, user_id))) || []; return listDepartmentByUser; }); } getListDepartmentManager(payload) { return __awaiter(this, void 0, void 0, function* () { const { user_id, hostname } = payload; const listDepartmentByUser = yield this.getDepartmentByUser(payload); if (listDepartmentByUser.length === 0) return []; const listId = listDepartmentByUser.map((item) => item.id); const resManager = (yield this.grpcClientSystemService.query({ query: query_1.queryDepartmentIsManager, variables: { department_manager_id: `{${listId.join(",")}}`, }, hostname, })); const { find_department } = resManager; // Lấy các phòng ban cấp dưới phòng ban đó const allDepartmentIsManager = find_department === null || find_department === void 0 ? void 0 : find_department.map((item) => this.getResOfDepartment(item.department, user_id)); return [...listDepartmentByUser, ...allDepartmentIsManager]; }); } get(payload) { return __awaiter(this, void 0, void 0, function* () { try { const res = yield this.getListDepartmentManager(payload); return res; } catch (error) { console.log(error, "error"); return []; } }); } }; exports.PHXGetListDepartmentManager = PHXGetListDepartmentManager; exports.PHXGetListDepartmentManager = PHXGetListDepartmentManager = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [grpc_client_system_service_1.PHXGrpcClientSystemService]) ], PHXGetListDepartmentManager); //# sourceMappingURL=get-list-department-manager-v2.service.js.map