/** * Created by wisestone on 2018-01-03. */ 'use strict'; define([ 'app', 'angular' ], function (app, angular) { app.controller('projectModifyController', ['$scope', '$rootScope', '$log', '$resourceProvider', 'User', '$uibModalInstance', 'Project', '$injector', '$controller', 'parameter', 'SweetAlert', '$filter', function ($scope, $rootScope, $log, $resourceProvider, User, $uibModalInstance, Project, $injector, $controller, parameter, SweetAlert, $filter) { $scope.fn = { cancel : cancel, // 팝업 창 닫기 formSubmit : formSubmit, // 폼 전송 formCheck : formCheck, // 폼 체크 detail : detail, // 상세 정보 조회 removeUsr : removeUsr, // 일반 사용자 제거 removeManager : removeManager, // 관리자 제거 removeDepartment : removeDepartment, // 부서 제거 getManagerListCallBack : getManagerListCallBack, // 관리자 auto complete callback function getProjectListCallBack : getProjectListCallBack // 프로젝트 auto complete callback function }; $scope.vm = { search : { id : parameter.id, deep : "01" // 프로젝트 연관된 모든 정보를 어느정도까지 가져올지 결정, 01 - 사용자, 관리자 정보 }, form : { id : parameter.id, name : "", projects : [], // 유저 리스트 검색용 parentProjects : [], // 상위프로젝트 용 status : "", startDate : "", endDate : "", description : "", managers : [], // 관리자 users : [], // 일반 사용자 departments : [], // 부서 startEndDateRange : "" }, managerName : "", // 관리자 이름 검색 userName : "", // 일반 사용자 이름 검색 departmentName : "", // 부서 이름 검색 projectName : "", // 상위 프로젝트 이름 검색 autoCompletePage : { manager : { page : 0, totalPage : 0 }, project : { page : 0, totalPage : 0 } } }; angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); init(); // 상위 프로젝트에서 자기자신은 선택 안되도록 설정 function init() { $scope.vm.form.parentProjects = []; if ($rootScope.workProject != null) { $scope.vm.form.parentProjects.push($rootScope.workProject); } } // 팀원 삭제 function removeUsr(index) { $scope.vm.form.users.splice(index, 1); } // 담당부서 삭제 function removeDepartment(index) { $scope.vm.form.departments.splice(index, 1); } // 관리자 삭제 function removeManager(index) { $scope.vm.form.managers.splice(index, 1); $scope.vm.managerName = ""; } // 관리자 목록 조회 function getManagerListCallBack(result) { $scope.vm.autoCompletePage.manager.totalPage = result.data.page.totalPage; } function getProjectListCallBack(result) { $scope.vm.autoCompletePage.project.totalPage = result.data.page.totalPage; } function formCheck(formInvalid) { if (formInvalid) { return true; } if ($scope.vm.form.managers.length < 1) { return true; } return false; } function formSubmit() { $rootScope.spinner = true; var content = { id : $scope.vm.form.id, //parentProjectId : $scope.vm.projectName.length > 0 && $scope.vm.projectName == $scope.vm.form.parentProjects[0].name ? $scope.vm.form.parentProjects[0].id : null, name : $rootScope.preventXss($scope.vm.form.name), status : $scope.vm.form.status, startDate : "", endDate : "", description : $rootScope.preventXss($scope.vm.form.description), managerIds : (function () { var managerIds = []; angular.forEach($scope.vm.form.managers, function (user) { managerIds.push(user.id); }); return managerIds; })(), userIds : (function () { var userIds = []; angular.forEach($scope.vm.form.users, function (user) { userIds.push(user.id); }); return userIds; })(), departmentIds : (function () { var departmentIds = []; angular.forEach($scope.vm.form.departments, function (department) { departmentIds.push(department.id); }); return departmentIds; })(), }; if ($scope.vm.form.startEndDateRange === null || $scope.vm.form.startEndDateRange === "") { content.startDate = ""; content.endDate = ""; } else { var startEndDateRange = $scope.vm.form.startEndDateRange.split("~"); content.startDate = startEndDateRange[0].trim(); content.endDate = startEndDateRange[1].trim(); } Project.modify($resourceProvider.getContent( content, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { $scope.fn.cancel(); // 목록 화면 갱신 $rootScope.$broadcast("getProjectList", {}); } else { SweetAlert.error($filter("translate")("project.failedToModifyProject"), result.data.message.message); //"프로젝트 수정 실패" } $rootScope.spinner = false; }); } function cancel() { $rootScope.$broadcast("closeLayer"); // 팝업이 열리고 나서 js-multi, js-single 등에서 body 이벤트가 날아가는 현상 수정 $uibModalInstance.dismiss('cancel'); $(document).unbind("keydown"); // 단축키 이벤트 제거 } function detail() { Project.detail($resourceProvider.getContent( $scope.vm.search, $resourceProvider.getPageContent(0, 1))).then(function (result) { if (result.data.message.status === "success") { if (angular.isDefined(result.data.data)) { $scope.vm.form.name = result.data.data.name; $scope.vm.form.status = result.data.data.status; if (result.data.data.startDate == "" && result.data.data.endDate == "") { $scope.vm.form.startEndDateRange = "" } else { $scope.vm.form.startEndDateRange = result.data.data.startDate + " ~ " + result.data.data.endDate; } $scope.vm.form.description = result.data.data.description; $scope.vm.form.managers = result.data.data.projectManagerVos; $scope.vm.form.users = result.data.data.projectUserVos; $scope.vm.form.departments = result.data.data.projectDepartmentVos; if (result.data.data.parentProjectVo != null) { $scope.vm.form.parentProjects = []; $scope.vm.form.parentProjects.push(result.data.data.parentProjectVo); $scope.vm.projectName = result.data.data.parentProjectVo.name; } } } else { SweetAlert.error($filter("translate")("project.failedToProjectDetails"), result.data.message.message); //"프로젝트 상세 정보 조회 실패" } }); } function getStartProjectListCallback(result){ // 프로젝트 autocomplete page 업데이트 $scope.vm.autoCompletePage.project.totalPage = result.data.page.totalPage; } $scope.fn.detail(); }]); });