/** * Created by wisestone on 2018-11-22. */ 'use strict'; define([ 'app' ], function (app) { app.controller('downIssueModifyStatusController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', 'SweetAlert', '$timeout', '$stateParams', 'parameter', 'Issue', 'IssueStatus', '$filter', '$injector', '$controller', function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, SweetAlert, $timeout, $stateParams, parameter, Issue, IssueStatus, $filter, $injector, $controller) { // 함수 모음 $scope.fn = { cancel: cancel, // 팝업 창 닫기 formSubmit: formSubmit, // 폼 전송 formCheck: formCheck, // 폼 체크 findNextMultiIssueStatus: findNextMultiIssueStatus, // 이동 가능한 이슈 상태를 찾는다. removeDepartment : removeDepartment, // 담당부서 삭제 }; // 변수 모음 $scope.vm = { issueStatusList: [], // 변경 가능한 상태 목록 form: { departments: [], // 담당 부서 선택 목록 issueStatusId: undefined, comment: "" }, departmentName : "" }; angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); // 담당부서 삭제 function removeDepartment(index) { $scope.vm.form.departments.splice(index, 1); } $scope.$watch("vm.form.issueStatusId", function (newValue) { // 이슈 상태별 담당부서 표시 let selectIssueStatusId = $scope.vm.form.issueStatusId; let issueStatusList = $scope.vm.issueStatusList; $scope.vm.form.departments = []; if (issueStatusList != null && $scope.vm.issueStatusList.length > 0 && selectIssueStatusId !== "") { for (let i = 0; i < issueStatusList.length; i++) { if (issueStatusList[i].id.toString() === selectIssueStatusId) { let workflowDepartments = issueStatusList[i].workflowDepartmentVos; workflowDepartments.forEach(function (workflowDepartment) { $scope.vm.form.departments.push(workflowDepartment.departmentVo); }); break; } } $scope.vm.issueStatusList.forEach(function (issueStatus) { if (issueStatus.id === $scope.vm.form.issueStatusId) { } }); } }); // 이동 가능한 이슈 상태를 찾는다. function findNextMultiIssueStatus() { $rootScope.spinner = true; var content = { issueIds : (function () { var issueIds = []; angular.forEach(parameter.downIssues, function (downIssue) { issueIds.push(downIssue); }); return issueIds; })(), }; IssueStatus.findNextMultiIssueStatus($resourceProvider.getContent( content, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { $scope.vm.issueStatusList = result.data.data; } else { SweetAlert.swal($filter("translate")("issue.failedIssueStatusCheck"), result.data.message.message, "error"); // 이동 가능한 이슈 상태 조회 실패 } $rootScope.spinner = false; }); } // 폼 전송 function formCheck(formInvalid) { if (formInvalid) { return true; } return false; } // 폼 전송 function formSubmit() { $rootScope.spinner = true; var content = { ids: (function () { var issueIds = []; angular.forEach(parameter.downIssues, function (downIssue) { issueIds.push(downIssue); }); return issueIds; })(), issueStatusId: $scope.vm.form.issueStatusId, comment: $scope.vm.form.comment, projectId : parameter.projectId, departmentIds : (function () { var departmentIds = []; angular.forEach($scope.vm.form.departments, function (department) { departmentIds.push(department.id); }); return departmentIds; })(), }; Issue.modifyMultiIssueStatus($resourceProvider.getContent(content, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { $scope.fn.cancel(); $rootScope.$broadcast("getIssueList", {}); if ($rootScope.isDefined($rootScope.currentDetailIssueId)) { $rootScope.$broadcast("getIssueDetail", {id: $rootScope.currentDetailIssueId}); } } else { SweetAlert.error($filter("translate")("issue.failedToChangeMultipleIssueStatus"), result.data.message.message); // 다중 이슈 상태 변경 실패 } $rootScope.spinner = false; }); } // 팝업 창 닫기 function cancel() { $rootScope.$broadcast("closeLayer"); // 팝업이 열리고 나서 js-multi, js-single 등에서 body 이벤트가 날아가는 현상 수정 $uibModalInstance.dismiss('cancel'); $(document).unbind("keydown"); // 단축키 이벤트 제거 } // 이동 가능한 이슈 상태를 찾는다. $scope.fn.findNextMultiIssueStatus(); }]); });