OWL ITS + 탐지시스템(인터넷 진흥원)
src/main/webapp/scripts/components/utils/autoComplete.controller.js
@@ -17,8 +17,15 @@
                var User = $injector.get("User");
                var Project = $injector.get("Project");
                var Workflow = $injector.get("Workflow");
                var CompanyField = $injector.get("CompanyField");
                var Issue = $injector.get("Issue");
                var UserWorkspace = $injector.get("UserWorkspace");
                var IspField = $injector.get("IspField");
                var HostingField = $injector.get("HostingField");
                var IssueType = $injector.get("IssueType");
                var IssueTypeCustomField = $injector.get("IssueTypeCustomField");
                var CustomField = $injector.get("CustomField");
                var CompanyFieldCategory = $injector.get("CompanyFieldCategory");
                var $log = $injector.get("$log");
                var SweetAlert = $injector.get("SweetAlert");
@@ -26,8 +33,22 @@
                $scope.fn.getUserList = getUserList;    //  사용자 목록 정보를 조회한다.
                $scope.fn.getProjectList = getProjectList;  //  프로젝트 목록 정보를 조회한다.
                $scope.fn.getIssueList = getIssueList;  //  일감 목록 정보를 조회한다.
                $scope.fn.getParentIssueList = getParentIssueList;   // 상위 이슈 목록 정보를 조회한다.
                $scope.fn.getRelIssueList = getRelIssueList;   // 연관 이슈 목록 정보를 조회한다.
                $scope.fn.getDownIssueList = getDownIssueList;  //  하위 이슈 목록 정보를 조회한다.
                $scope.fn.getWorkflowList = getWorkflowList;    //  워크플로우 목록 정보를 조회한다.
                $scope.fn.getDepartmentList = getDepartmentList;    //  부서 목록 정보를 조회한다.
                $scope.fn.getUserDepartmentList = getUserDepartmentList;    //  부서 목록 정보를 조회한다.
                $scope.fn.getIssueCompanyFieldList = getIssueCompanyFieldList;    //  업체 목록 정보를 조회한다.
                $scope.fn.getIssueDepartmentList = getIssueDepartmentList;    //  담당자 -> 담당부서 목록 정보를 조회한다.
                $scope.fn.getIssueIspFieldList = getIssueIspFieldList;    //  ISP 목록 정보를 조회한다.
                $scope.fn.getIssueHostingFieldList = getIssueHostingFieldList;    //  호스팅 목록 정보를 조회한다.
                $scope.fn.getPartnerList = getPartnerList;          // 업체/isp/호스팅 목록 조회
                $scope.fn.getIssueTypeList = getIssueTypeList;          // 이슈 유형 목록 조회
                $scope.fn.getCustomFieldList = getCustomFieldList;          // 사용자 정의 필드 목록 조회
                $scope.fn.getMailTargetAll = getMailTargetAll;          // 사용자 정의 필드 목록 조회
                $scope.fn.getIssueTypeCustomFieldList = getIssueTypeCustomFieldList;      // 이슈 유형에서 사용중인 사용자정의 필드가져오기
                $scope.fn.getCompanyTypeCategory = getCompanyTypeCategory;    //  업체 카테고리 목록 정보를 조회한다.
                $scope.fn.getCompanyChildSector = getCompanyChildSector;    //  업체 카테고리 목록 정보를 조회한다.
                function getUserList(query, excludeList, page, callBack) {
                    var conditions = {
@@ -52,7 +73,8 @@
                            });
                            return excludeIds;
                        })()
                        })(),
                        issueId : $rootScope.currentDetailIssueId
                    };
                    var deferred = $q.defer();
@@ -94,6 +116,8 @@
                    var deferred = $q.defer();
                    Project.findWork($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
@@ -111,20 +135,17 @@
                    return deferred.promise;
                }
                function getDepartmentList(query, excludeList, page, callBack) {
                function getIssueList(query, issueTypeId, excludeList, page, callBack) {
                    var conditions = {
                        departmentName : query,
                        userId : (function () {
                            var userId = "";
                        name : query,
                        /*issueTypeIds : (function () {
                            var ids = [];
                            if ($rootScope.isDefined($scope.vm.form)) {
                                angular.forEach($scope.vm.form.users, function (user) {
                                    userId = user.id;
                                });
                            }
                            return userId;
                        })(),
                        excludeIds : (function () { //어떤 역할?
                            ids.push(issueTypeId);
                            return ids;
                        })(),*/
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
@@ -134,9 +155,10 @@
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    UserWorkspace.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                    Issue.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
@@ -147,10 +169,138 @@
                            deferred.resolve(result.data.data);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("managementWorkspace.failedToSelectWorkspaceFullDepartmentList"), result.data.message.message, "error"); // "부서 목록 조회 실패"
                            SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), result.data.message.message, "error"); // "워크플로우 목록 조회 실패"
                        }
                    });
                    return deferred.promise;
                }
                function getParentIssueList(query, issueTypeId, excludeList, page, callBack) {
                    var conditions = {
                        name : query,
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    if ($rootScope.isDefined(page) && page > 0) {
                        $rootScope.spinner = true;
                    }
                    Issue.find($resourceProvider.getContent(
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(result.data.data);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), result.data.message.message, "error"); // "워크플로우 목록 조회 실패"
                        }
                        $rootScope.spinner = false;
                    });
                    return deferred.promise;
                }
                function getRelIssueList(parentYN, project, query, issueTypeId, excludeList, page, callBack) {
                    var conditions = {
                        name : query,
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            return excludeIds;
                        })(),
                        parentYN : parentYN,
                        projectIds : (function () {
                            var projectIds = [];
                            if (project != null) {
                                if (project.length < 1) {
                                    SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), $filter("translate")("common.selectToProjectListLookUp"), "error"); // "프로젝트를 먼저 선택 해 주세요."
                                }
                                if ($rootScope.isDefined(project[0])) {
                                    projectIds.push(project[0].id);
                                }
                            }
                            return projectIds;
                        })()
                    };
                    var deferred = $q.defer();
                    if ($rootScope.isDefined(page) && page > 0) {
                        $rootScope.spinner = true;
                    }
                    Issue.find($resourceProvider.getContent(
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(result.data.data);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), result.data.message.message, "error"); // "워크플로우 목록 조회 실패"
                        }
                        $rootScope.spinner = false;
                    });
                    return deferred.promise;
                }
                function getDownIssueList(query, issueTypeId, parentIssueId, excludeList, page, callBack) {
                    var conditions = {
                        name : query,
                        issueTypeIds : (function () {
                            var ids = [];
                            ids.push(issueTypeId);
                            return ids;
                        })(),
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            if(parentIssueId != null) {
                                excludeIds.push(parentIssueId);
                            }
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    if ($rootScope.isDefined(page) && page > 0) {
                        $rootScope.spinner = true;
                    }
                    Issue.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(result.data.data);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), result.data.message.message, "error"); // "워크플로우 목록 조회 실패"
                        }
                        $rootScope.spinner = false;
                    });
                    return deferred.promise;
                }
@@ -188,7 +338,37 @@
                    return deferred.promise;
                }
                function getIssueList(query, excludeList, page, callBack) {
                function getUserDepartmentList(query, excludeList, page, callBack) {
                    var conditions = {
                        departmentName : query,
                        excludeIds : (function () { //excludeIds : 제외 할 리스트
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    UserWorkspace.departmentFind($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(result.data.data); //사용자가 속해져있는 부서 리스트를 불러옴
                        }
                        else {
                            SweetAlert.swal($filter("translate")("managementWorkspace.failedToSelectWorkspaceFullDepartmentList"), result.data.message.message, "error"); // "부서 목록 조회 실패"
                        }
                    });
                    return deferred.promise;
                }
                function getIssueCompanyFieldList(query, excludeList, page, callBack) {
                    var conditions = {
                        name : query,
                        excludeIds : (function () {
@@ -204,7 +384,284 @@
                    var deferred = $q.defer();
                    Issue.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                    CompanyField.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 100 : 1000))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(result.data.data);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "프로젝트 목록 조회 실패"
                        }
                    });
                    return deferred.promise;
                }
                function getIssueDepartmentList(issueTypeId, query, excludeList, page, callBack) {
                    var conditions = {
                        //issueTypeId : $scope.vm.form.issueTypeId,
                        issueTypeId : Number(issueTypeId),
                        departmentName : query,
                        userId : $rootScope.user.id,
                        projectId : (function () {
                            var projectId = "";
                            if ($rootScope.isDefined($scope.vm.form)) {
                                angular.forEach($scope.vm.form.projects, function (project) {
                                    projectId = project.id;
                                });
                            }
                            return projectId;
                        })(),
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    //워크플로우에 속해있는 담당부서 찾기
                    UserWorkspace.findWorkflowDepartment($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
                            const departments = result.data.data;
                            if(departments != null){
                                var filterDepartments = departments.filter(function(item, idx){
                                    return departments.findIndex(function(item2, idx2){
                                        return item.departmentName === item2.departmentName
                                    }) == idx;
                                });
                            }
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(filterDepartments);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "프로젝트 목록 조회 실패"
                        }
                    });
                    return deferred.promise;
                }
                function getIssueIspFieldList(query, excludeList, page, callBack) {
                    var conditions = {
                        name : query,
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    IspField.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 100 : 1000))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(result.data.data);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "프로젝트 목록 조회 실패"
                        }
                    });
                    return deferred.promise;
                }
                function getIssueHostingFieldList(query, excludeList, page, callBack) {
                    var conditions = {
                        name : query,
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    HostingField.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(result.data.data);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "프로젝트 목록 조회 실패"
                        }
                    });
                    return deferred.promise;
                }
                function getCompanyTypeCategory(typeCategory, query, excludeList, page, callBack) {
                    var conditions = {
                        typeCategory : typeCategory,
                        useValue : query,
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    if ($rootScope.isDefined(page) && page > 0) {
                        $rootScope.spinner = true;
                    }
                    CompanyFieldCategory.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 100 : 1000))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(result.data.data);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("common.failedToCompanyCategoryListLookUp"), result.data.message.message, "error");
                        }
                        $rootScope.spinner = false;
                    });
                    return deferred.promise;
                }
                function getCompanyChildSector(parentSector, parentSectorId, typeCategory, query, excludeList, page, callBack) {
                    var conditions = {
                        parentId : (function () {   // 업종(대분류)
                            var parentId = "";
                            if (parentSector != null && parentSector !== "") {
                                parentId = parentSector;
                            }else {
                                parentId = parentSectorId;
                            }
                            return parentId;
                        })(),
                        typeCategory : typeCategory,
                        useValue : query,
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    if ($rootScope.isDefined(page) && page > 0) {
                        $rootScope.spinner = true;
                    }
                    CompanyFieldCategory.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 100 : 1000))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(result.data.data);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("common.failedToCompanyCategoryListLookUp"), result.data.message.message, "error");
                        }
                        $rootScope.spinner = false;
                    });
                    return deferred.promise;
                }
                function getPartnerList(query, excludeList, page, callBack) {
                    var conditions = {
                        partnerName : query,
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    HostingField.getPartnerList($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(result.data.content);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "프로젝트 목록 조회 실패"
                        }
                    });
                    return deferred.promise;
                }
                function getCustomFieldList(query, excludeList, page, callBack) {
                    var conditions = {
                        name : query,
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    CustomField.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
@@ -215,12 +672,118 @@
                            deferred.resolve(result.data.data);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), result.data.message.message, "error"); // "워크플로우 목록 조회 실패"
                            SweetAlert.swal($filter("translate")("issue.failedToIssueTypeListLookup"), result.data.message.message, "error"); // "이슈 유형 목록 조회 실패"
                        }
                    });
                    return deferred.promise;
                }
                function getIssueTypeList(query, excludeList, page, callBack) {
                    var conditions = {
                        name : query,
                        excludeIds : (function () {
                            var excludeIds = [];
                            angular.forEach(excludeList, function (exclude) {
                                excludeIds.push(exclude.id);
                            });
                            return excludeIds;
                        })()
                    };
                    var deferred = $q.defer();
                    IssueType.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            deferred.resolve(result.data.data);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("issue.failedToIssueTypeListLookup"), result.data.message.message, "error"); // "이슈 유형 목록 조회 실패"
                        }
                    });
                    return deferred.promise;
                }
                //  이슈 유형에 연결된 사용자 정의 필드
                function getIssueTypeCustomFieldList(query, excludeList, projectId, issueTypeId, page, callBack) {
                    if (projectId == null) return;
                    if (issueTypeId == null) return;
                    var deferred = $q.defer();
                    IssueTypeCustomField.find($resourceProvider.getContent({
                            name : query,
                            projectId : projectId,
                            issueTypeId : issueTypeId,
                            excludeIds : (function () {
                                var excludeIds = [];
                                angular.forEach(excludeList, function (exclude) {
                                    excludeIds.push(exclude.id);
                                });
                                return excludeIds;
                            })()
                        },
                        $resourceProvider.getPageContent(0, 1000))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if ($rootScope.isDefined(callBack)) {
                                callBack(result);
                            }
                            var customFields = result.data.data;
                            var customFieldVos = [];
                            customFields.forEach(function (customField) {
                                customFieldVos.push(customField.customFieldVo);
                            })
                            deferred.resolve(customFieldVos);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("issue.failedToUserDefinedFieldListAssociatedLookup"), result.data.message.message, "error"); // 이슈 유형에 연결된 사용자 정의 필드 목록 조회 실패
                        }
                    });
                    return deferred.promise;
                }
                function getMailTargetAll(excludeList) {
                    var deferred = $q.defer();
                    var partners = $scope.vm.partners.slice();
                    if (excludeList != null && excludeList.id.length > 0) {
                        var filterData = excludeList.id.filter(function(item, idx){
                            return excludeList.id.findIndex(function(item2, idx2){
                                return item === item2
                            }) == idx;
                        });
                        for (let i = partners.length - 1 ; i >= 0 ; i--) {
                            filterData.forEach(function (exclude) {
                                if (partners[i] != null && partners[i].id === exclude) {
                                    partners.splice(i, 1);
                                    if (partners[i] == null) {
                                        return false;
                                    }
                                }
                            });
                        }
                    }
                    deferred.resolve(partners);
                    return deferred.promise;
                }
            }
        ]);
    }