/** * Created by wisestone on 2018-12-10. */ 'use strict'; define([ 'app', 'angular' ], function (app, angular) { app.controller('workspaceUserConfigController', ['$scope', '$rootScope', '$log', '$resourceProvider', 'SweetAlert', '$uibModal', '$q', '$state', '$tableProvider', 'Payment', 'Workspace', 'UserWorkspace', '$filter', '$injector', '$controller', function ($scope, $rootScope, $log, $resourceProvider, SweetAlert, $uibModal, $q, $state, $tableProvider, Payment, Workspace, UserWorkspace, $filter, $injector, $controller) { /* $scope.fn 상속 중 */ $scope.fn.getUserWorkspaceList = getUserWorkspaceList; // 업무 공간 전체 사용자 정보 $scope.fn.makeTableConfigs = makeTableConfigs; // 업무 공간에 참여하는 전체 사용자 목록 테이블 설정 $scope.fn.initSearch = initSearch; // 검색 조건 초기화 $scope.fn.changePageRowCount = changePageRowCount; // 업무 공간 참여 사용자 목록 보기 개수 변경 $scope.fn.getLevels = getLevels; // 등급 목록 가져오기 $scope.fn.getDepartments = getDepartments; // 부서 목록 가져오기 /* $scope.vm 상속 중 */ $scope.vm.search = { name : "", // 이름 account : "", // 이메일 statuses : [], // 상태 - Y, N levels : [], // 등급 departments: [], // 부서 }; $scope.vm.options = { statuses : [{ fieldKey : "Y", fieldValue : $filter("translate")("managementWorkspace.participation") // "참여" }, { fieldKey : "N", fieldValue : $filter("translate")("managementWorkspace.withdrawal") // "탈퇴" }] }; $scope.vm.page = { selectedPage : 0, selectedPageRowCount : String(10) }; $scope.vm.managerYn = false; $scope.vm.levels = []; $scope.vm.departments = []; $scope.vm.tableConfigs = []; $scope.vm.responseData = { data : [] }; // 테이블 이벤트 $scope.vm.tableEvent = { modifyUserWorkspace : modifyUserWorkspace, // 업무 공간 참여하는 사용자의 참여 상태 변경 modifyUserDepartments : modifyUserDepartments //사용자 부서 변경 }; angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); // 상세 정보 $scope.$on("getUserWorkspaceList", function () { $scope.fn.getLevels(); $scope.fn.getDepartments(); $scope.fn.getUserWorkspaceList(0); }); // 검색 조건 초기화 function initSearch() { $scope.vm.search.name = ""; $scope.vm.search.account = ""; $scope.vm.search.statuses = []; $scope.vm.search.levels = []; $scope.vm.search.departments = []; $scope.fn.getUserWorkspaceList(0); } // 업무 공간 참여 사용자 목록 보기 개수 변경 function changePageRowCount() { $scope.fn.getUserWorkspaceList(0); } // 업무공간 전체 사용자 목록 테이블 설정 function makeTableConfigs() { $scope.vm.tableConfigs = []; $scope.vm.tableConfigs.push($tableProvider.config() .setHName("common.name") .setHWidth("width-120-p") .setDAlign("text-center") .setDName("userName")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("common.email") .setHWidth("width-120-p") .setDAlign("text-center") .setDName("account")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("common.department") .setHWidth("width-120-p") .setDAlign("text-center") .setDType("renderer") .setDRenderer("USE_DEPARTMENT_LIST")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("common.level") .setHWidth("width-120-p") .setDAlign("text-center") .setDType("renderer") .setDName("level") .setDRenderer("LEVEL_OPTION")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("managementWorkspace.joinStatus") .setHWidth("width-140-p") .setDType("renderer") .setDAlign("text-center pdr0 pdt0 pdl0 pdb0") .setDName("userYn") .setDRenderer("WORKSPACE_USE_YN")); } // 업무 공간 전체 사용자 목록 조회 function getUserWorkspaceList(selectedPage) { if (selectedPage < 0) { selectedPage = 0; } // 현재 페이지 정보 var currentPage = 0; // 쿠키에 선택한 페이지 정보가 없으면 기본 페이지 정보 0 을 저장 if (angular.isUndefined(selectedPage) || selectedPage === "") { currentPage = $scope.vm.page.selectedPage; } else { currentPage = selectedPage; } var conditions = { name : $scope.vm.search.name, account : $scope.vm.search.account, statuses : (function () { var statuses = []; angular.forEach($scope.vm.search.statuses, function (status) { statuses.push(status.fieldKey); }); return statuses; })(), levelIds : (function () { var levels = []; angular.forEach($scope.vm.search.levels, function (level) { levels.push(level.fieldKey); }); return levels; })(), departmentIds : (function () { var departments = []; angular.forEach($scope.vm.search.departments, function (department) { departments.push(department.fieldKey); }); return departments; })(), }; UserWorkspace.find($resourceProvider.getContent(conditions, $resourceProvider.getPageContent(currentPage, $scope.vm.page.selectedPageRowCount))).then(function (result) { if (result.data.message.status === "success") { $scope.vm.page.selectedPage = currentPage + 1; $scope.vm.responseData = result.data; var idx = 0; angular.forEach($scope.vm.responseData.data, function (data) { if (data.managerYn === "Y") { $scope.vm.managerYn = true; } data.levels = []; data.departments = []; data.levels = $scope.vm.levels.slice(); data.departments = $scope.vm.departments.slice(); idx++; }); } else { SweetAlert.error($filter("translate")("managementWorkspace.failedToSelectWorkspaceFullUserList"), result.data.message.message); // "업무 공간 전체 사용자 목록 조회 실패" } }); } // 등급 목록 function getLevels() { var deferred = $q.defer(); $scope.vm.levels = []; UserWorkspace.levelFind($resourceProvider.getContent({}, $resourceProvider.getPageContent(0, 1000))).then(function (result) { if (result.data.message.status === "success") { angular.forEach(result.data.data, function (level) { $scope.vm.levels.push({ fieldKey : level.id, fieldValue : level.levelName }); }); } else { SweetAlert.swal($filter("translate")("managementWorkspace.failedToSelectWorkspaceFullLevelList"), result.data.message.message, "error"); // 용자 등급 목록 조회 실패 } deferred.resolve(result.data.data); }); return deferred.promise; } // 부서 목록 function getDepartments() { var deferred = $q.defer(); $scope.vm.departments = []; UserWorkspace.departmentFind($resourceProvider.getContent({}, $resourceProvider.getPageContent(0, 1000))).then(function (result) { if (result.data.message.status === "success") { angular.forEach(result.data.data, function (department) { $scope.vm.departments.push({ fieldKey : department.id, fieldValue : department.departmentName }); }); } else { SweetAlert.swal($filter("translate")("managementWorkspace.failedToSelectWorkspaceFullDepartmentList"), result.data.message.message, "error"); // 부서 목록 조회 실패 } deferred.resolve(result.data.data); }); return deferred.promise; } // 업무 공간 참여하는 사용자의 참여 상태 변경 function modifyUserWorkspace(userWorkspace) { UserWorkspace.modify($resourceProvider.getContent( userWorkspace, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { // 내가 관리하는 업무 공간 정보를 조회한다. $scope.fn.findMyWorkspace(); } else { userWorkspace.useYn = false; SweetAlert.error($filter("translate")("managementWorkspace.failedToParticipationStatusChange"), result.data.message.message); // "참여 상태 변경 실패" } }); } // 사용자가 속해있는 부서 수정 팝업 function modifyUserDepartments(id, userId) { $uibModal.open({ templateUrl : 'views/workspace/workspaceUserDepartmentModify.html', size : "md", controller : 'workspaceUserDepartmentModifyController', backdrop : 'static', windowClass : 'workflow-window', resolve : { parameter : function () { return { id : id, userId : userId }; } } }); } $scope.fn.makeTableConfigs(); } ]); } );