OWL ITS + 탐지시스템(인터넷 진흥원)
박지현
2022-02-22 1dad4d94cc415d2f8092aff0368744289337f504
src/main/webapp/scripts/app/issue/issueModify.controller.js
@@ -170,7 +170,8 @@
                    severities : [],    //  중요도 정보
                    fileTableConfigs : [],   //  파일 업로드 정보 테이블
                    inheritPartners : parameter.inheritPartners,
                    downTotalCount : parameter.downTotalCount
                    downTotalCount : parameter.downTotalCount,
                    usePartner : parameter.usePartner,
                };
                // 연관 일감 관련
@@ -577,326 +578,366 @@
                function formSubmit() {
                    $rootScope.spinner = true;
                    let inheritYn = false;
                    if ($scope.vm.inheritPartners && $scope.vm.downTotalCount > 0) {
                        SweetAlert.swal({
                                title : $filter("translate")("issue.modifyDownIssue"), // 하위 이슈 변경
                                text : $filter("translate")("issue.wantToInheritPartnersOfParentIssue"), // 상위이슈의 파트너 정보(업체/ISP/호스팅)를 적용시키겠습니까?
                                type : "warning",
                                showCancelButton : true,
                                confirmButtonColor : "#DD6B55",
                                confirmButtonText : $filter("translate")("common.ok"), // 네
                                cancelButtonText : $filter("translate")("common.no"), // 아니오
                                closeOnConfirm : false,
                                closeOnCancel : false
                            },
                            function (isConfirm) {
                                if (isConfirm) {
                                    inheritYn = true;
                    var content = {
                        id : parameter.id,
                        title : $rootScope.preventXss($scope.vm.form.title),    //  제목
                        description : $rootScope.preventXss($scope.vm.form.description),   //  내용
                        inheritYn : inheritYn,
                        companyName : $scope.vm.companyName,
                        companyManager : $scope.vm.companyManager,
                        companyTel : $scope.vm.companyTel,
                        companyEmail :$scope.vm.companyEmail,
                        companyUrl : $scope.vm.companyUrl,
                        companyMemo : $scope.vm.companyMemo,
                        companyTypeId : (function () {
                            var companyTypeId = null;
                            if ($scope.vm.form.companyTypes != null && $scope.vm.form.companyTypes.length > 0) {
                                companyTypeId = $scope.vm.form.companyTypes[0].id;
                            } else {
                                companyTypeId = $scope.vm.form.companyTypeId;
                            }
                            return companyTypeId;
                        })(),
                        parentSectorId : (function () {
                            var parentSectorId = null;
                            if ($scope.vm.form.parentSectors != null && $scope.vm.form.parentSectors.length > 0) {
                                parentSectorId = $scope.vm.form.parentSectors[0].id;
                            } else {
                                parentSectorId = $scope.vm.form.parentSectorId;
                            }
                            return parentSectorId;
                        })(),
                        childSectorId : (function () {
                            var childSectorId = null;
                            if ($scope.vm.form.childSectors != null && $scope.vm.form.childSectors.length > 0) {
                                childSectorId = $scope.vm.form.childSectors[0].id;
                            } else {
                                childSectorId = $scope.vm.form.childSectorId;
                            }
                            return childSectorId;
                        })(),
                        regionId : (function () {
                            var regionId = null;
                            if ($scope.vm.form.regions != null && $scope.vm.form.regions.length > 0) {
                                regionId = $scope.vm.form.regions[0].id;
                            } else {
                                regionId = $scope.vm.form.regionId;
                            }
                            return regionId;
                        })(),
                        statusId : (function () {
                            var statusId = null;
                            if ($scope.vm.form.statuses != null && $scope.vm.form.statuses.length > 0) {
                                statusId = $scope.vm.form.statuses[0].id;
                            } else {
                                statusId = $scope.vm.form.statusId;
                            }
                            return statusId;
                        })(),
                        statusName : $scope.vm.form.status,
                        ispName : $scope.vm.ispName,
                        ispCode : $scope.vm.ispCode,
                        ispManager : $scope.vm.ispManager,
                        ispTel : $scope.vm.ispTel,
                        ispEmail : $scope.vm.ispEmail,
                        ispUrl : $scope.vm.ispUrl,
                        ispMemo : $scope.vm.ispMemo,
                        hostingName : $scope.vm.hostingName,
                        hostingCode : $scope.vm.hostingCode,
                        hostingManager : $scope.vm.hostingManager,
                        hostingTel : $scope.vm.hostingTel,
                        hostingEmail : $scope.vm.hostingEmail,
                        hostingUrl : $scope.vm.hostingUrl,
                        hostingMemo : $scope.vm.hostingMemo,
                        projectId : (function () {   //  프로젝트 아이디
                            var projectId = "";
                            if ($scope.vm.form.projects.length > 0) {
                                projectId = $scope.vm.form.projects[0].id;
                            }
                            return projectId;
                        })(),
                        issueTypeId : $scope.vm.form.issueTypeId,   //  이슈 유형 아이디
                        priorityId : $scope.vm.form.priorityId,    //  우선순위 아이디
                        severityId : $scope.vm.form.severityId,    //  중요도 아이디
                        issueStatusId : $scope.vm.form.issueStatusId,   //  이슈 상태 아이디
                        companyId : (function () {
                            var companyId = null;
                            if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0) {
                                companyId = $scope.vm.form.issueCompanyFields[0].id;
                            }
                            return companyId;
                        }),
                        ispId : (function () {
                            var ispId = null;
                            if ($scope.vm.form.issueIspFields != null && $scope.vm.form.issueIspFields.length > 0) {
                                ispId = $scope.vm.form.issueIspFields[0].id;
                            }
                            return ispId;
                        }),
                        hostingId : (function () {
                            var hostingId = null;
                            if ($scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0) {
                                hostingId = $scope.vm.form.issueHostingFields[0].id;
                            }
                            return hostingId;
                        }),
                        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;
                        })(),
                        attachedFileIds : (function () {
                            var attachedFileIds = [];
                            angular.forEach($scope.vm.form.attachedFiles, function (attachedFile) {
                                if ($scope.vm.form.description.indexOf(attachedFile.path) !== -1) {
                                    attachedFileIds.push(attachedFile.id);
                                }
                            });
                            return attachedFileIds;
                        })(),
                        issueCompanyFields : (function () {
                            var issueCompanyFields = [];
                            if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0 ){
                                var companyField = $scope.vm.form.issueCompanyFields[0];
                                //사용자가 직접 업체 추가 할 경우
                                if ($rootScope.isDefined(companyField) && companyField.name !== $scope.vm.companyName) {
                                    return issueCompanyFields;
                                }
                                var content = {
                                    id : parameter.id,
                                    title : $rootScope.preventXss($scope.vm.form.title),    //  제목
                                    description : $rootScope.preventXss($scope.vm.form.description),   //  내용
                                    inheritYn : inheritYn,
                                    companyName : $scope.vm.companyName,
                                    companyManager : $scope.vm.companyManager,
                                    companyTel : $scope.vm.companyTel,
                                    companyEmail :$scope.vm.companyEmail,
                                    companyUrl : $scope.vm.companyUrl,
                                    companyMemo : $scope.vm.companyMemo,
                                    companyTypeId : (function () {
                                        var companyTypeId = null;
                                        if ($scope.vm.form.companyTypes != null && $scope.vm.form.companyTypes.length > 0) {
                                            companyTypeId = $scope.vm.form.companyTypes[0].id;
                                        } else {
                                            companyTypeId = $scope.vm.form.companyTypeId;
                                        }
                                        return companyTypeId;
                                    })(),
                                    parentSectorId : (function () {
                                        var parentSectorId = null;
                                        if ($scope.vm.form.parentSectors != null && $scope.vm.form.parentSectors.length > 0) {
                                            parentSectorId = $scope.vm.form.parentSectors[0].id;
                                        } else {
                                            parentSectorId = $scope.vm.form.parentSectorId;
                                        }
                                        return parentSectorId;
                                    })(),
                                    childSectorId : (function () {
                                        var childSectorId = null;
                                        if ($scope.vm.form.childSectors != null && $scope.vm.form.childSectors.length > 0) {
                                            childSectorId = $scope.vm.form.childSectors[0].id;
                                        } else {
                                            childSectorId = $scope.vm.form.childSectorId;
                                        }
                                        return childSectorId;
                                    })(),
                                    regionId : (function () {
                                        var regionId = null;
                                        if ($scope.vm.form.regions != null && $scope.vm.form.regions.length > 0) {
                                            regionId = $scope.vm.form.regions[0].id;
                                        } else {
                                            regionId = $scope.vm.form.regionId;
                                        }
                                        return regionId;
                                    })(),
                                    statusId : (function () {
                                        var statusId = null;
                                        if ($scope.vm.form.statuses != null && $scope.vm.form.statuses.length > 0) {
                                            statusId = $scope.vm.form.statuses[0].id;
                                        } else {
                                            statusId = $scope.vm.form.statusId;
                                        }
                                        return statusId;
                                    })(),
                                    statusName : $scope.vm.form.status,
                                    ispName : $scope.vm.ispName,
                                    ispCode : $scope.vm.ispCode,
                                    ispManager : $scope.vm.ispManager,
                                    ispTel : $scope.vm.ispTel,
                                    ispEmail : $scope.vm.ispEmail,
                                    ispUrl : $scope.vm.ispUrl,
                                    ispMemo : $scope.vm.ispMemo,
                                    hostingName : $scope.vm.hostingName,
                                    hostingCode : $scope.vm.hostingCode,
                                    hostingManager : $scope.vm.hostingManager,
                                    hostingTel : $scope.vm.hostingTel,
                                    hostingEmail : $scope.vm.hostingEmail,
                                    hostingUrl : $scope.vm.hostingUrl,
                                    hostingMemo : $scope.vm.hostingMemo,
                                    projectId : (function () {   //  프로젝트 아이디
                                        var projectId = "";
                                        if ($scope.vm.form.projects.length > 0) {
                                            projectId = $scope.vm.form.projects[0].id;
                                        }
                                        return projectId;
                                    })(),
                                    issueTypeId : $scope.vm.form.issueTypeId,   //  이슈 유형 아이디
                                    priorityId : $scope.vm.form.priorityId,    //  우선순위 아이디
                                    severityId : $scope.vm.form.severityId,    //  중요도 아이디
                                    issueStatusId : $scope.vm.form.issueStatusId,   //  이슈 상태 아이디
                                    companyId : (function () {
                                        var companyId = null;
                                        if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0) {
                                            companyId = $scope.vm.form.issueCompanyFields[0].id;
                                        }
                                        return companyId;
                                    }),
                                    ispId : (function () {
                                        var ispId = null;
                                        if ($scope.vm.form.issueIspFields != null && $scope.vm.form.issueIspFields.length > 0) {
                                            ispId = $scope.vm.form.issueIspFields[0].id;
                                        }
                                        return ispId;
                                    }),
                                    hostingId : (function () {
                                        var hostingId = null;
                                        if ($scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0) {
                                            hostingId = $scope.vm.form.issueHostingFields[0].id;
                                        }
                                        return hostingId;
                                    }),
                                    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;
                                    })(),
                                    attachedFileIds : (function () {
                                        var attachedFileIds = [];
                                        angular.forEach($scope.vm.form.attachedFiles, function (attachedFile) {
                                            if ($scope.vm.form.description.indexOf(attachedFile.path) !== -1) {
                                                attachedFileIds.push(attachedFile.id);
                                            }
                                        });
                                        return attachedFileIds;
                                    })(),
                                    issueCompanyFields : (function () {
                                        var issueCompanyFields = [];
                                        if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0 ){
                                            var companyField = $scope.vm.form.issueCompanyFields[0];
                                            //사용자가 직접 업체 추가 할 경우
                                            if ($rootScope.isDefined(companyField) && companyField.name !== $scope.vm.companyName) {
                                                return issueCompanyFields;
                                            }
                                            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,
                                                url :$scope.vm.companyUrl,
                                                memo : $scope.vm.companyMemo,
                                                companyTypeId : $scope.vm.form.companyTypeId,
                                                parentSectorId : $scope.vm.form.parentSectorId,
                                                childSectorId : $scope.vm.form.childSectorId,
                                                regionId : $scope.vm.form.regionId,
                                                statusId : $scope.vm.form.statusId,
                                                statusName : $scope.vm.form.status
                                            });
                                        }
                                        return issueCompanyFields;
                                    })(),
                                    issueIspFields : (function () {
                                        var issueIspFields = [];
                                        if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0
                                            && $scope.vm.form.issueCompanyFields[0].ispFieldVo != null
                                            || $scope.vm.form.issueIspFields != null && $scope.vm.form.issueIspFields.length > 0 ){
                                            var ispField = $scope.vm.form.issueIspFields[0];
                                            //사용자가 직접 ISP 추가 할 경우
                                            if ($rootScope.isDefined(ispField) && ispField.name !== $scope.vm.ispName) {
                                                return issueIspFields;
                                            }
                                            issueIspFields.push({
                                                ispId : $scope.vm.ispId,
                                                code : $scope.vm.ispCode,
                                                name : $scope.vm.ispName,
                                                manager : $scope.vm.ispManager,
                                                tel : $scope.vm.ispTel,
                                                email :$scope.vm.ispEmail,
                                                url :$scope.vm.ispUrl,
                                                memo : $scope.vm.ispMemo
                                            });
                                        }
                                        return issueIspFields;
                                    })(),
                                    issueHostingFields : (function () {
                                        var issueHostingFields = [];
                                        if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0
                                            && $scope.vm.form.issueCompanyFields[0].hostingFieldVo != null
                                            || $scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0 ){
                                            var hostingField = $scope.vm.form.issueHostingFields[0];
                                            //사용자가 직접 호스팅 추가 할 경우
                                            if ($rootScope.isDefined(hostingField) && hostingField.name !== $scope.vm.hostingName) {
                                                return issueHostingFields;
                                            }
                                            issueHostingFields.push({
                                                hostingId : $scope.vm.hostingId,
                                                name : $scope.vm.hostingName,
                                                code : $scope.vm.hostingCode,
                                                manager : $scope.vm.hostingManager,
                                                tel : $scope.vm.hostingTel,
                                                email :$scope.vm.hostingEmail,
                                                url :$scope.vm.hostingUrl,
                                                memo : $scope.vm.hostingMemo
                                            });
                                        }
                                        return issueHostingFields;
                                    })(),
                                    removeFiles : $scope.vm.form.removeFiles,
                                    startCompleteDateRange : $scope.vm.form.startCompleteDateRange,
                                    issueCustomFields : (function () {    //  이슈에서 사용되는 사용자 정의 필드
                                        var issueCustomFields = [];
                                        angular.forEach($scope.vm.form.issueCustomFields, function (issueCustomField) {
                                            var useValues = [];
                                            if (angular.isArray(issueCustomField.useValues)) {
                                                angular.forEach(issueCustomField.useValues, function (useValue) {
                                                    useValues.push(useValue.value);
                                                });
                                            }
                                            else {
                                                useValues.push(issueCustomField.useValues);
                                            }
                                            //  useValues 를 배열로 변환한다.
                                            var temp = angular.copy(issueCustomField);
                                            temp.useValues = useValues;
                                            issueCustomFields.push(temp);
                                        });
                                        return issueCustomFields;
                                    })()
                                };
                                Issue.modify({
                                    method : "POST",
                                    file : (function () {
                                        var files = [];
                                        angular.forEach($scope.vm.form.files, function (file) {
                                            if (angular.isUndefined(file.id)) {
                                                files.push(file);
                                            }
                                        });
                                        return files;
                                    })(),
                                    //      data 속성으로 별도의 데이터 전송
                                    fields : {
                                        content : content
                                    },
                                    fileFormDataName : "file"
                                }).then(function (result) {
                                    if (result.data.message.status === "success") {
                                        $scope.fn.cancel();
                                        //  이슈 상세 화면 요청
                                        $rootScope.$broadcast("getIssueDetail", {
                                            id : parameter.id
                                        });
                                        $rootScope.$broadcast("getIssueList");
                                    }
                                    else {
                                        SweetAlert.error($filter("translate")("issue.failedIssueModify"), result.data.message.message); // 이슈 수정 실패
                                    }
                                    $rootScope.spinner = false;
                                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,
                                    url :$scope.vm.companyUrl,
                                    memo : $scope.vm.companyMemo,
                                    companyTypeId : $scope.vm.form.companyTypeId,
                                    parentSectorId : $scope.vm.form.parentSectorId,
                                    childSectorId : $scope.vm.form.childSectorId,
                                    regionId : $scope.vm.form.regionId,
                                    statusId : $scope.vm.form.statusId,
                                    statusName : $scope.vm.form.status
                                });
                            }
                            return issueCompanyFields;
                        })(),
                        issueIspFields : (function () {
                            var issueIspFields = [];
                            if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0
                                && $scope.vm.form.issueCompanyFields[0].ispFieldVo != null
                                || $scope.vm.form.issueIspFields != null && $scope.vm.form.issueIspFields.length > 0 ){
                                var ispField = $scope.vm.form.issueIspFields[0];
                                //사용자가 직접 ISP 추가 할 경우
                                if ($rootScope.isDefined(ispField) && ispField.name !== $scope.vm.ispName) {
                                    return issueIspFields;
                                }
                                issueIspFields.push({
                                    ispId : $scope.vm.ispId,
                                    code : $scope.vm.ispCode,
                                    name : $scope.vm.ispName,
                                    manager : $scope.vm.ispManager,
                                    tel : $scope.vm.ispTel,
                                    email :$scope.vm.ispEmail,
                                    url :$scope.vm.ispUrl,
                                    memo : $scope.vm.ispMemo
                                });
                            }
                            return issueIspFields;
                        })(),
                        issueHostingFields : (function () {
                            var issueHostingFields = [];
                            if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0
                                && $scope.vm.form.issueCompanyFields[0].hostingFieldVo != null
                                || $scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0 ){
                                var hostingField = $scope.vm.form.issueHostingFields[0];
                                //사용자가 직접 호스팅 추가 할 경우
                                if ($rootScope.isDefined(hostingField) && hostingField.name !== $scope.vm.hostingName) {
                                    return issueHostingFields;
                                }
                                issueHostingFields.push({
                                    hostingId : $scope.vm.hostingId,
                                    name : $scope.vm.hostingName,
                                    code : $scope.vm.hostingCode,
                                    manager : $scope.vm.hostingManager,
                                    tel : $scope.vm.hostingTel,
                                    email :$scope.vm.hostingEmail,
                                    url :$scope.vm.hostingUrl,
                                    memo : $scope.vm.hostingMemo
                                });
                            }
                            return issueHostingFields;
                        })(),
                        removeFiles : $scope.vm.form.removeFiles,
                        startCompleteDateRange : $scope.vm.form.startCompleteDateRange,
                        issueCustomFields : (function () {    //  이슈에서 사용되는 사용자 정의 필드
                            var issueCustomFields = [];
                            angular.forEach($scope.vm.form.issueCustomFields, function (issueCustomField) {
                                var useValues = [];
                                if (angular.isArray(issueCustomField.useValues)) {
                                    angular.forEach(issueCustomField.useValues, function (useValue) {
                                        useValues.push(useValue.value);
                                    });
                                }
                                else {
                                    useValues.push(issueCustomField.useValues);
                                }
                                //  useValues 를 배열로 변환한다.
                                var temp = angular.copy(issueCustomField);
                                temp.useValues = useValues;
                                issueCustomFields.push(temp);
                            });
                            return issueCustomFields;
                        })()
                    };
                    if ($rootScope.isDefined($scope.vm.usePartner) && $scope.vm.usePartner.length > 0
                            && $rootScope.isDefined($scope.vm.inheritPartners) && $scope.vm.inheritPartners
                            && $rootScope.isDefined($scope.vm.downTotalCount) && $scope.vm.downTotalCount > 0) {
                        SweetAlert.swal({
                            title : $filter("translate")("issue.modifyIssues"), // 이슈 변경
                            text : $filter("translate")("issue.wantToInheritPartnersOfIssue"), // 현재 이슈의 파트너 정보(업체/ISP/호스팅)를 모든 하위이슈에 일괄 적용시키겠습니까?
                            type : "warning",
                            showCancelButton : true,
                            confirmButtonColor : "#DD6B55",
                            confirmButtonText : $filter("translate")("common.ok"), // 네
                            cancelButtonText : $filter("translate")("common.no"), // 아니오
                            closeOnConfirm : false,
                            closeOnCancel : false
                        },
                        function (isConfirm) {
                            if (isConfirm) {
                                inheritYn = true;
                                content.inheritYn = true;
                            }
                            Issue.modify({
                                method : "POST",
                                file : (function () {
                                    var files = [];
                                    angular.forEach($scope.vm.form.files, function (file) {
                                        if (angular.isUndefined(file.id)) {
                                            files.push(file);
                                        }
                                    });
                                    return files;
                                })(),
                                //      data 속성으로 별도의 데이터 전송
                                fields : {
                                    content : content
                                },
                                fileFormDataName : "file"
                            }).then(function (result) {
                                if (result.data.message.status === "success") {
                                    $scope.fn.cancel();
                                    //  이슈 상세 화면 요청
                                    $rootScope.$broadcast("getIssueDetail", {
                                        id : parameter.id
                                    });
                                    $rootScope.$broadcast("getIssueList");
                                }
                                else {
                                    SweetAlert.error($filter("translate")("issue.failedIssueModify"), result.data.message.message); // 이슈 수정 실패
                                }
                                $rootScope.spinner = false;
                            });
                        });
                    } else {
                        Issue.modify({
                            method : "POST",
                            file : (function () {
                                var files = [];
                                angular.forEach($scope.vm.form.files, function (file) {
                                    if (angular.isUndefined(file.id)) {
                                        files.push(file);
                                    }
                                });
                                return files;
                            })(),
                            //      data 속성으로 별도의 데이터 전송
                            fields : {
                                content : content
                            },
                            fileFormDataName : "file"
                        }).then(function (result) {
                            if (result.data.message.status === "success") {
                                $scope.fn.cancel();
                                //  이슈 상세 화면 요청
                                $rootScope.$broadcast("getIssueDetail", {
                                    id : parameter.id
                                });
                                $rootScope.$broadcast("getIssueList");
                            }
                            else {
                                SweetAlert.error($filter("translate")("issue.failedIssueModify"), result.data.message.message); // 이슈 수정 실패
                            }
                            $rootScope.spinner = false;
                        });
                    }
                }