| | |
| | | ], |
| | | function (app, angular) { |
| | | app.controller('issueModifyController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', '$injector', |
| | | '$controller', '$tableProvider', 'SweetAlert', '$timeout', '$stateParams', '$q', 'parameter', 'Issue', 'User', 'AttachedFile', 'IssueType', 'Priority', 'Severity', 'IssueTypeCustomField', '$filter', |
| | | '$controller', '$tableProvider', 'SweetAlert', '$timeout', '$stateParams', '$q', 'parameter', 'Issue', 'User', 'AttachedFile', 'IssueType', 'Priority', 'Severity', 'HostingField', 'IssueTypeCustomField', '$filter', |
| | | function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, $injector, $controller, $tableProvider, SweetAlert, $timeout, |
| | | $stateParams, $q, parameter, Issue, User, AttachedFile, IssueType, Priority, Severity, IssueTypeCustomField, $filter) { |
| | | $stateParams, $q, parameter, Issue, User, AttachedFile, IssueType, Priority, Severity, HostingField, IssueTypeCustomField, $filter) { |
| | | |
| | | $scope.fn = { |
| | | cancel : cancel, // 팝업 창 닫기 |
| | |
| | | setFormByIssueTypeCustomFields : setFormByIssueTypeCustomFields, // 이슈 유형에 연결된 사용자 정의 필드 정보를 입력 폼에서 사용할 수 있게 가공한다. |
| | | setUseValueByIssueTypeCustomFields : setUseValueByIssueTypeCustomFields, // 이슈에서 사용자가 선택한 사용자 정의 필드 값을 입력 폼에 셋팅한다. |
| | | detail : detail, // 이슈 정보 조회 |
| | | // removeManager : removeManager, // 담당자 삭제 |
| | | removeManager : removeManager, // 담당자 삭제 |
| | | removeDepartment : removeDepartment, // 담당부서 삭제 |
| | | removeUploadFile : removeUploadFile, // 특정 파일을 삭제 |
| | | setIssueTypeTemplate : setIssueTypeTemplate, // 이슈 유형 템플릿 적용하기 |
| | | startExecute : startExecute // 최초 실행 |
| | | startExecute : startExecute, // 최초 실행 |
| | | containsPartner : containsPartner, |
| | | getPartners : getPartners |
| | | }; |
| | | |
| | | $scope.vm = { |
| | | partnerVos : "", |
| | | search : { |
| | | id : parameter.id, |
| | | deep : "01" // 프로젝트 연관된 모든 정보를 어느정도까지 가져올지 결정, 01 - 사용자, 관리자 정보 |
| | | deep : "02" // 프로젝트 연관된 모든 정보를 어느정도까지 가져올지 결정, 01 - 사용자, 관리자 정보 |
| | | }, |
| | | form : { |
| | | title : "", // 제목 |
| | |
| | | priorityId : "", // 우선순위 아이디 |
| | | severityId : "", // 중요도 아이디 |
| | | issueStatusId : "", // 이슈 상태 아이디 |
| | | // users : [], // 담당자 |
| | | users : [], // 담당자 |
| | | departments : [], // 담당부서 |
| | | files : [], // 업로드 파일 |
| | | attachedFiles : [], // 섬머노트로 파일 업로드를 할 경우 서버에서 pk를 따고 issue id와 연동 작업이 필요하다. |
| | |
| | | projectName : "", // 프로젝트 명 검색 |
| | | userName : "", // 사용자 검색 |
| | | departmentName : "", // 부서명 검색 |
| | | companyId : -1, |
| | | companyName : "", // 업체명 검색 |
| | | companyCode : "", // 업체 코드 |
| | | companyManager : "", // 업체 담당자 |
| | | companyTel : "", // 업체 전화번호 |
| | | companyEmail : "", // 업체 이메일 |
| | | companyMemo : "", // 업체 비고 |
| | | ispId : -1, |
| | | ispName : "", // ISP 명 |
| | | ispCode : "", // ISP 코드 |
| | | ispManager : "", // ISP 담당자 |
| | | ispTel : "", // ISP 전화번호 |
| | | ispEmail : "", // ISP 이메일 |
| | | ispMemo : "", // ISP 비고 |
| | | hostingId : -1, |
| | | hostingName : "", // 호스팅명 검색 |
| | | hostingManager : "", // 호스팅 담당자 |
| | | hostingTel : "", // 호스팅 전화번호 |
| | |
| | | } |
| | | }); |
| | | |
| | | $scope.$watch("vm.form.issueTypeId", function (newValue, oldValue) { |
| | | $scope.vm.partnerVos = $scope.fn.getPartners(); |
| | | }); |
| | | |
| | | |
| | | // 업로드 파일 삭제 |
| | | function removeUploadFile(index) { |
| | | var temp = []; |
| | |
| | | } |
| | | |
| | | // 담당자 삭제 |
| | | // function removeManager(index) { |
| | | // $scope.vm.form.users.splice(index, 1); |
| | | // } |
| | | function removeManager(index) { |
| | | $scope.vm.form.users.splice(index, 1); |
| | | } |
| | | |
| | | // 담당부서 삭제 |
| | | function removeDepartment(index) { |
| | |
| | | |
| | | // 업체정보 결과 값 Event 처리(set) |
| | | $scope.$on("companyFieldEvent", function (event, result) { |
| | | $scope.vm.issuecompanyId = result[0].id; |
| | | $scope.vm.companyId = result[0].id; |
| | | $scope.vm.companyName = result[0].name; |
| | | $scope.vm.companyManager = result[0].manager; |
| | | $scope.vm.companyTel = result[0].tel; |
| | | $scope.vm.companyEmail = result[0].email; |
| | |
| | | |
| | | // ISP정보 결과 값 Event 처리(set) |
| | | $scope.$on("ispFieldEvent", function (event, result) { |
| | | $scope.vm.ispId = result[0].id; |
| | | $scope.vm.ispName = result[0].name; |
| | | $scope.vm.ispCode = result[0].code; |
| | | $scope.vm.ispManager = result[0].manager; |
| | | $scope.vm.ispTel = result[0].tel; |
| | |
| | | |
| | | // 호스팅정보 결과 값 Event 처리(set) |
| | | $scope.$on("hostingFieldEvent", function (event, result) { |
| | | $scope.vm.hostingId = result[0].id; |
| | | $scope.vm.hostingName = result[0].name; |
| | | $scope.vm.hostingCode = result[0].code; |
| | | $scope.vm.hostingManager = result[0].manager; |
| | | $scope.vm.hostingTel = result[0].tel; |
| | |
| | | id : parameter.id, |
| | | title : $rootScope.preventXss($scope.vm.form.title), // 제목 |
| | | description : $rootScope.preventXss($scope.vm.form.description), // 내용 |
| | | companyName : $scope.vm.companyName, |
| | | companyManager : $scope.vm.companyManager, |
| | | companyTel : $scope.vm.companyTel, |
| | | companyEmail :$scope.vm.companyEmail, |
| | | companyMemo : $scope.vm.companyMemo, |
| | | ispName : $scope.vm.ispName, |
| | | ispCode : $scope.vm.ispCode, |
| | | ispManager : $scope.vm.ispManager, |
| | | ispTel : $scope.vm.ispTel, |
| | | ispEmail : $scope.vm.ispEmail, |
| | | ispMemo : $scope.vm.ispMemo, |
| | | hostingName : $scope.vm.hostingName, |
| | | hostingCode : $scope.vm.hostingCode, |
| | | hostingManager : $scope.vm.hostingManager, |
| | | hostingTel : $scope.vm.hostingTel, |
| | | hostingEmail : $scope.vm.hostingEmail, |
| | | hostingMemo : $scope.vm.hostingMemo, |
| | | |
| | | projectId : (function () { // 프로젝트 아이디 |
| | | var projectId = ""; |
| | | |
| | |
| | | |
| | | return projectId; |
| | | })(), |
| | | companyId : (function () { // 프로젝트 아이디 |
| | | var issueCompanyId = ""; |
| | | |
| | | issueTypeId : $scope.vm.form.issueTypeId, // 이슈 유형 아이디 |
| | | priorityId : $scope.vm.form.priorityId, // 우선순위 아이디 |
| | | severityId : $scope.vm.form.severityId, // 중요도 아이디 |
| | | issueStatusId : $scope.vm.form.issueStatusId, // 이슈 상태 아이디 |
| | | |
| | | companyId : (function () { |
| | | var companyId = -1; |
| | | |
| | | if ($scope.vm.form.issueCompanyFields.length > 0) { |
| | | issueCompanyId = $scope.vm.form.issueCompanyFields[0].id; |
| | | companyId = $scope.vm.form.issueCompanyFields[0].id; |
| | | } |
| | | |
| | | return issueCompanyId; |
| | | })(), |
| | | return companyId; |
| | | }), |
| | | |
| | | ispId : (function () { |
| | | var ispId = ""; |
| | | var ispId = -1; |
| | | |
| | | if ($scope.vm.form.issueIspFields.length > 0) { |
| | | ispId = $scope.vm.form.issueIspFields[0].id; |
| | | } |
| | | |
| | | return ispId; |
| | | })(), |
| | | }), |
| | | |
| | | hostingId : (function () { |
| | | var hostingId = ""; |
| | | var hostingId = -1; |
| | | |
| | | if ($scope.vm.form.issueHostingFields.length > 0) { |
| | | hostingId = $scope.vm.form.issueHostingFields[0].id; |
| | | } |
| | | |
| | | return hostingId; |
| | | })(), |
| | | issueTypeId : $scope.vm.form.issueTypeId, // 이슈 유형 아이디 |
| | | priorityId : $scope.vm.form.priorityId, // 우선순위 아이디 |
| | | severityId : $scope.vm.form.severityId, // 중요도 아이디 |
| | | issueStatusId : $scope.vm.form.issueStatusId, // 이슈 상태 아이디 |
| | | }), |
| | | |
| | | userIds : (function () { |
| | | var userIds = []; |
| | |
| | | |
| | | return departmentIds; |
| | | })(), |
| | | removeFiles : $scope.vm.form.removeFiles, |
| | | |
| | | attachedFileIds : (function () { |
| | | var attachedFileIds = []; |
| | | |
| | |
| | | |
| | | return attachedFileIds; |
| | | })(), |
| | | startCompleteDateRange : $scope.vm.form.startCompleteDateRange, |
| | | |
| | | issueCompanyFields : (function () { |
| | | var issueCompanyFields = []; |
| | | if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0 ){ |
| | | var companyField = $scope.vm.form.issueCompanyFields[0]; |
| | | |
| | | var issueCompanyField = $scope.vm.form.issueCompanyFields[0]; |
| | | issueCompanyFields.companyId = issueCompanyField.id; |
| | | issueCompanyField.id = null; |
| | | issueCompanyFields.push(issueCompanyField); |
| | | issueCompanyFields.push({ |
| | | id : companyField.id, |
| | | companyId : $scope.vm.companyId, |
| | | name : $scope.vm.companyName, |
| | | manager : $scope.vm.companyManager, |
| | | tel : $scope.vm.companyTel, |
| | | email :$scope.vm.companyEmail, |
| | | memo : $scope.vm.companyMemo |
| | | }); |
| | | } |
| | | |
| | | return issueCompanyFields; |
| | | })(), |
| | | |
| | | issueIspFields : (function () { |
| | | var issueIspFields = []; |
| | | if ($scope.vm.form.issueIspFields != null && $scope.vm.form.issueIspFields.length > 0 ){ |
| | | var ispField = $scope.vm.form.issueIspFields[0]; |
| | | |
| | | var ispField = $scope.vm.form.issueIspFields[0]; |
| | | issueIspFields.ispId = ispField.id; |
| | | ispField.id = null; |
| | | issueIspFields.push(ispField); |
| | | issueIspFields.push({ |
| | | id : ispField.id, |
| | | ispId : $scope.vm.ispId, |
| | | code : $scope.vm.ispCode, |
| | | name : $scope.vm.ispName, |
| | | manager : $scope.vm.ispManager, |
| | | tel : $scope.vm.ispTel, |
| | | email :$scope.vm.ispEmail, |
| | | memo : $scope.vm.ispMemo |
| | | }); |
| | | |
| | | } |
| | | |
| | | return issueIspFields; |
| | | })(), |
| | | |
| | | issueHostingFields : (function () { |
| | | var issueHostingFields = []; |
| | | if ($scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0 ){ |
| | | |
| | | var hostingField = $scope.vm.form.issueHostingFields[0]; |
| | | issueHostingFields.hostingId = hostingField.id; |
| | | hostingField.id = null; |
| | | issueHostingFields.push(hostingField); |
| | | var hostingField = $scope.vm.form.issueHostingFields[0]; |
| | | |
| | | issueHostingFields.push({ |
| | | id : hostingField.id, |
| | | hostingId : $scope.vm.hostingId, |
| | | name : $scope.vm.hostingName, |
| | | code : $scope.vm.hostingCode, |
| | | manager : $scope.vm.hostingManager, |
| | | tel : $scope.vm.hostingTel, |
| | | email :$scope.vm.hostingEmail, |
| | | memo : $scope.vm.hostingMemo |
| | | }); |
| | | } |
| | | |
| | | return issueHostingFields; |
| | | })(), |
| | | |
| | | removeFiles : $scope.vm.form.removeFiles, |
| | | startCompleteDateRange : $scope.vm.form.startCompleteDateRange, |
| | | |
| | | issueCustomFields : (function () { // 이슈에서 사용되는 사용자 정의 필드 |
| | | var issueCustomFields = []; |
| | |
| | | }); |
| | | |
| | | return deferred.promise; |
| | | } |
| | | |
| | | // 업체/ISP/호스팅 이름이 포함 여부 확인 |
| | | function containsPartner(name) { |
| | | var result = false; |
| | | |
| | | if ($scope.vm.partnerVos != null) { |
| | | $scope.vm.partnerVos.forEach(function (partnerVo) { |
| | | if (name === partnerVo.name) { |
| | | result = true; |
| | | } |
| | | }); |
| | | } |
| | | return result; |
| | | |
| | | } |
| | | |
| | | // 중요도 목록 |
| | |
| | | $scope.vm.form.users = result.data.data.userVos; |
| | | $scope.vm.form.departments = result.data.data.departmentVos; |
| | | $scope.vm.form.files = result.data.data.attachedFileVos; |
| | | // issueVo 에 get & set 설정값 설정 ex)issueCompanyVos |
| | | $scope.vm.form.issueCompanyFields = result.data.data.issueCompanyVos; |
| | | // |
| | | $scope.vm.form.issueIspFields = result.data.data.issueIspVos; |
| | | // |
| | | $scope.vm.form.issueHostingFields = result.data.data.issueHostingVos; |
| | | // |
| | | |
| | | if (result.data.data.issueCompanyVos != null && result.data.data.issueCompanyVos.length > 0) { |
| | | $scope.vm.form.issueCompanyFields = result.data.data.issueCompanyVos; |
| | | var issueCompanyFieldValue = result.data.data.issueCompanyVos[0]; |
| | | $scope.vm.companyId = issueCompanyFieldValue.companyId; |
| | | $scope.vm.companyName = issueCompanyFieldValue.name; |
| | | $scope.vm.companyManager = issueCompanyFieldValue.manager; |
| | | $scope.vm.companyTel = issueCompanyFieldValue.tel; |
| | | $scope.vm.companyEmail = issueCompanyFieldValue.email; |
| | | $scope.vm.companyMemo = issueCompanyFieldValue.memo; |
| | | } |
| | | if (result.data.data.issueIspVos != null && result.data.data.issueIspVos.length > 0) { |
| | | $scope.vm.form.issueIspFields = result.data.data.issueIspVos; |
| | | var issueIspFieldValue = result.data.data.issueIspVos[0]; |
| | | $scope.vm.ispId = issueIspFieldValue.ispId; |
| | | $scope.vm.ispName = issueIspFieldValue.name; |
| | | $scope.vm.ispCode = issueIspFieldValue.code; |
| | | $scope.vm.ispManager = issueIspFieldValue.manager; |
| | | $scope.vm.ispTel = issueIspFieldValue.tel; |
| | | $scope.vm.ispEmail = issueIspFieldValue.email; |
| | | $scope.vm.ispMemo = issueIspFieldValue.memo; |
| | | } |
| | | |
| | | if (result.data.data.issueHostingVos != null && result.data.data.issueHostingVos.length > 0) { |
| | | $scope.vm.form.issueHostingFields = result.data.data.issueHostingVos; |
| | | var issueHostingFieldValue = result.data.data.issueHostingVos[0]; |
| | | $scope.vm.hostingId = issueHostingFieldValue.hostingId; |
| | | $scope.vm.hostingName = issueHostingFieldValue.name; |
| | | $scope.vm.hostingCode = issueHostingFieldValue.code; |
| | | $scope.vm.hostingManager = issueHostingFieldValue.manager; |
| | | $scope.vm.hostingTel = issueHostingFieldValue.tel; |
| | | $scope.vm.hostingEmail = issueHostingFieldValue.email; |
| | | $scope.vm.hostingMemo = issueHostingFieldValue.memo; |
| | | } |
| | | |
| | | if ($rootScope.isDefined(result.data.data.startDate)) { |
| | | $scope.vm.form.startCompleteDateRange = result.data.data.startDate + " ~ " + result.data.data.completeDate; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | function getPartners() { |
| | | |
| | | HostingField.getPartnerList($resourceProvider.getContent( |
| | | {}, |
| | | $resourceProvider.getPageContent(0, 1))).then(function (result) { |
| | | if (result.data.message.status === "success") { |
| | | $scope.vm.partnerVos = result.data.data.usePartnerVos; |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | // 최초 실행 |
| | | function startExecute() { |
| | | |
| | | var promises = { |
| | | detail : $scope.fn.detail(), |
| | | getIssueTypes : $scope.fn.getIssueTypes(), |
| | | getPriorities : $scope.fn.getPriorities(), |
| | | getSeverities : $scope.fn.getSeverities() |
| | | getSeverities : $scope.fn.getSeverities(), |
| | | getPartners : $scope.fn.getPartners() |
| | | }; |
| | | |
| | | $q.all(promises).then(function (results) { |