/** * Created by wisestone on 2017-12-15. */ 'use strict'; define([ 'app', 'angular' ], function (app,angular) { app.controller('projectAddController', ['$scope', '$rootScope', '$log', '$resourceProvider', 'User', '$uibModalInstance', 'Project', 'SweetAlert', '$injector', '$controller', '$filter', function ($scope, $rootScope, $log, $resourceProvider, User, $uibModalInstance, Project, SweetAlert, $injector, $controller, $filter) { $scope.fn = { cancel : cancel, // 팝업창 닫기 formSubmit : formSubmit, // 폼 전송 formCheck : formCheck, // 폼 체크 removeUsr : removeUsr, // 일반 사용자 제거 removeDepartment : removeDepartment // 부서 제거 }; $scope.vm = { form : { name : "", // 프로젝트 명 projectKey : "", // 프로젝트 키 status : "02", // 상태 projectType : "BTS_PROJECT", // 프로젝트 유형 projects : [], // 상위 프로젝트 startEndDateRange : "", // 시작일, 종료일 정보 startDate : "", endDate : "", description : "", // 설명 managers : [{ id : $rootScope.user.id }], // 관리자 users : [], // 일반 사용자 departments : [] }, userName : "", // 일반 사용자 이름 검색 projectName : "", // 상위 프로젝트 이름 검색 autoCompletePage : { project : { page : 0, totalPage : 0 } }, }; angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); init(); // 상위 프로젝트에서 자기자신은 선택 안되도록 설정 function init() { $scope.vm.form.projects = []; if ($rootScope.workProject != null && $rootScope.workProject.id > -1) { $scope.vm.form.projects.push($rootScope.workProject); $scope.vm.projectName = $rootScope.workProject.name; } } // 팀원 삭제 function removeUsr(index) { $scope.vm.form.users.splice(index, 1); } // 담당부서 삭제 function removeDepartment(index) { $scope.vm.form.departments.splice(index, 1); } function formCheck(formInvalid) { if (formInvalid) { return true; } return false; } function formSubmit() { $rootScope.spinner = true; var content = { name : $rootScope.preventXss($scope.vm.form.name), projectKey : $scope.vm.form.projectKey, projectType : $scope.vm.form.projectType, parentProjectId : $scope.vm.projectName != null && $scope.vm.projectName.length > 0 ? $scope.vm.form.projects[0].id : null, 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; })(), // 부서 id 추가 필요 departmentIds : (function () { var departmentIds = []; angular.forEach($scope.vm.form.departments, function (department) { departmentIds.push(department.id); }); return departmentIds; })() }; if ($rootScope.isDefined($scope.vm.form.startEndDateRange)) { var startEndDateRange = $scope.vm.form.startEndDateRange.split("~"); content.startDate = startEndDateRange[0].trim(); content.endDate = startEndDateRange[1].trim(); } Project.add($resourceProvider.getContent( content, $resourceProvider.getPageContent(0, 10))).then(function (result) { if (result.data.message.status === "success") { $scope.fn.cancel(); $rootScope.user.lastProjectId = result.data.data.id; // 목록 화면 갱신 $rootScope.$broadcast("getProjectList", {}); } else { SweetAlert.error($filter("translate")("project.failedProjectCreation"), result.data.message.message); // "프로젝트 생성 실패" } $rootScope.spinner = false; }); } function cancel() { $rootScope.$broadcast("closeLayer"); // 팝업이 열리고 나서 js-multi, js-single 등에서 body 이벤트가 날아가는 현상 수정 $uibModalInstance.dismiss('cancel'); $(document).unbind("keydown"); // 단축키 이벤트 제거 } }]); });