From 1dad4d94cc415d2f8092aff0368744289337f504 Mon Sep 17 00:00:00 2001
From: 박지현 <jhpark@maprex.co.kr>
Date: 화, 22 2월 2022 14:29:43 +0900
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/webapp/scripts/app/issue/issueModify.controller.js |  745 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 699 insertions(+), 46 deletions(-)

diff --git a/src/main/webapp/scripts/app/issue/issueModify.controller.js b/src/main/webapp/scripts/app/issue/issueModify.controller.js
index 1795e34..39d20af 100644
--- a/src/main/webapp/scripts/app/issue/issueModify.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueModify.controller.js
@@ -9,9 +9,9 @@
     ],
     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,    //  �뙘�뾽 李� �떕湲�
@@ -19,6 +19,10 @@
                     formCheck : formCheck,  //  �뤌 泥댄겕
                     getUserListCallBack : getUserListCallBack,  //  �떞�떦�옄 autocomplete �럹�씠吏�
                     getProjectListCallBack : getProjectListCallBack,    //  �봽濡쒖젥�듃 autocomplete �럹�씠吏�
+                    getIssueCompanyFieldListCallBack : getIssueCompanyFieldListCallBack,    // �뾽泥댁젙蹂� autocomplete �럹�씠吏�
+                    getIssueDepartmentListCallBack : getIssueDepartmentListCallBack,    // �떞�떦�옄 -> �떞�떦遺��꽌 autocomplete �럹�씠吏�
+                    getIssueIspFieldListCallBack : getIssueIspFieldListCallBack,    // ISP�젙蹂� autocomplete �럹�씠吏�
+                    getIssueHostingFieldListCallBack : getIssueHostingFieldListCallBack,    // �샇�뒪�똿�젙蹂� autocomplete �럹�씠吏�
                     getOptionColor : getOptionColor,    //  �슦�꽑�닚�쐞, 以묒슂�룄 �깋�긽�쑝濡� Select �깭洹� �쟻�슜
                     onFileSelect : onFileSelect,    //  �뙆�씪 泥⑤�
                     imageUpload : imageUpload,  //  �꽟癒몃끂�듃 �씠誘몄� �뾽濡쒕뱶
@@ -30,39 +34,129 @@
                     setUseValueByIssueTypeCustomFields : setUseValueByIssueTypeCustomFields,    //  �씠�뒋�뿉�꽌 �궗�슜�옄媛� �꽑�깮�븳 �궗�슜�옄 �젙�쓽 �븘�뱶 媛믪쓣 �엯�젰 �뤌�뿉 �뀑�똿�븳�떎.
                     detail : detail,    //  �씠�뒋 �젙蹂� 議고쉶
                     removeManager : removeManager,  //  �떞�떦�옄 �궘�젣
+                    removeDepartment : removeDepartment,  //  �떞�떦遺��꽌 �궘�젣
                     removeUploadFile : removeUploadFile,    //  �듅�젙 �뙆�씪�쓣 �궘�젣
                     setIssueTypeTemplate : setIssueTypeTemplate,    //  �씠�뒋 �쑀�삎 �뀥�뵆由� �쟻�슜�븯湲�
-                    startExecute : startExecute //  理쒖큹 �떎�뻾
+                    startExecute : startExecute, //  理쒖큹 �떎�뻾
+                    containsPartner : containsPartner,
+                    getPartners : getPartners,
+                    getCompanyTypeListCallBack : getCompanyTypeListCallBack,
+                    getParentSectorListCallBack : getParentSectorListCallBack,
+                    getChildSectorListCallBack : getChildSectorListCallBack,
+                    getRegionListCallBack : getRegionListCallBack,
+                    getStatusListCallBack : getStatusListCallBack,
                 };
 
                 $scope.vm = {
+                    partnerVos : "",
                     search : {
                         id : parameter.id,
-                        deep : "01"    //  �봽濡쒖젥�듃 �뿰愿��맂 紐⑤뱺 �젙蹂대�� �뼱�뒓�젙�룄源뚯� 媛��졇�삱吏� 寃곗젙, 01 - �궗�슜�옄, 愿�由ъ옄 �젙蹂�
+                        deep : "02"    //  �봽濡쒖젥�듃 �뿰愿��맂 紐⑤뱺 �젙蹂대�� �뼱�뒓�젙�룄源뚯� 媛��졇�삱吏� 寃곗젙, 01 - �궗�슜�옄, 愿�由ъ옄 �젙蹂�
                     },
                     form : {
                         title : "",    //  �젣紐�
                         description : "",   //  �궡�슜
                         projects : [],  //  �봽濡쒖젥�듃
-                        issueTypeId : "",   //  �씠�뒋 �쑀�삎 �븘�씠�뵒
+                        issueCompanyFields : [], // �뾽泥댁젙蹂�
+                        issueIspFields : [], // ISP �젙蹂�
+                        issueHostingFields : [], // �샇�뒪�똿�젙蹂�
+                        issueTypeId : parameter.issueTypeId,   //  �씠�뒋 �쑀�삎 �븘�씠�뵒
                         priorityId : "",    //  �슦�꽑�닚�쐞 �븘�씠�뵒
                         severityId : "",    //  以묒슂�룄 �븘�씠�뵒
                         issueStatusId : "", //  �씠�뒋 �긽�깭 �븘�씠�뵒
-                        users : [],     //  �떞�떦�옄
+                        // users : [],     //  �떞�떦�옄
+                        departments : [], // �떞�떦遺��꽌
                         files : [], //  �뾽濡쒕뱶 �뙆�씪
                         attachedFiles : [], //  �꽟癒몃끂�듃濡� �뙆�씪 �뾽濡쒕뱶瑜� �븷 寃쎌슦 �꽌踰꾩뿉�꽌 pk瑜� �뵲怨� issue id�� �뿰�룞 �옉�뾽�씠 �븘�슂�븯�떎.
                         startCompleteDateRange : "", //  �떆�옉�씪 ~ 醫낅즺�씪
                         issueCustomFields : [],  //  �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶
                         removeFiles : [],   //  �궘�젣�븳 �뙆�씪 �젙蹂�
+                        companyTypeId : "",
+                        companyType : "", //湲곗뾽援щ텇
+                        parentSectorId : "",
+                        parentSector : "", //�뾽醫�(��遺꾨쪟)
+                        childSectorId : "",
+                        childSector : "", //�뾽醫�(以묐텇瑜�)
+                        regionId : "",
+                        region : "", //吏��뿭
+                        statusId : "",
+                        status : "", //�긽�깭
+                    },
+                    typeCategory : {
+                        companyType : "COMPANYTYPE",
+                        parentSector : "PARENTSECTOR",
+                        childSector : "CHILDSECTOR",
+                        region : "REGION",
+                        status : "STATUS"
                     },
                     projectName : "",   //  �봽濡쒖젥�듃 紐� 寃��깋
                     userName : "",  //  �궗�슜�옄 寃��깋
+                    departmentName : "",  // 遺��꽌紐� 寃��깋
+                    companyId : -1,
+                    companyName : "",   // �뾽泥대챸 寃��깋
+                    companyManager : "",   // �뾽泥� �떞�떦�옄
+                    companyTel : "",  // �뾽泥� �쟾�솕踰덊샇
+                    companyEmail : "",  // �뾽泥� �씠硫붿씪
+                    companyUrl : "",  // �뾽泥� url
+                    companyMemo : "",  // �뾽泥� 鍮꾧퀬
+                    ispId : -1,
+                    ispName : "", // ISP 紐�
+                    ispCode : "", // ISP 肄붾뱶
+                    ispManager : "", // ISP �떞�떦�옄
+                    ispTel : "", // ISP �쟾�솕踰덊샇
+                    ispEmail : "", // ISP �씠硫붿씪
+                    ispUrl : "",  // url
+                    ispMemo : "", // ISP 鍮꾧퀬
+                    hostingId : -1,
+                    hostingName : "", // �샇�뒪�똿紐� 寃��깋
+                    hostingManager : "", // �샇�뒪�똿 �떞�떦�옄
+                    hostingCode : "", // �샇�뒪�똿 肄붾뱶
+                    hostingTel : "", // �샇�뒪�똿 �쟾�솕踰덊샇
+                    hostingEmail : "", // �샇�뒪�똿 �씠硫붿씪
+                    hostingUrl : "",  // url
+                    hostingMemo : "", // �샇�뒪�똿 鍮꾧퀬
                     autoCompletePage : {
-                        user : {
+                        // user : {
+                        //     page : 0,
+                        //     totalPage : 0
+                        // },
+                        project : {
                             page : 0,
                             totalPage : 0
                         },
-                        project : {
+                        issueCompanyField : {
+                            page : 0,
+                            totalPage : 0
+                        },
+                        department : {
+                            page : 0,
+                            totalPage : 0
+                        },
+                        ispField : {
+                            page : 0,
+                            totalPage : 0
+                        },
+                        hostingField : {
+                            page : 0,
+                            totalPage : 0
+                        },
+                        companyType : {
+                            page : 0,
+                            totalPage : 0
+                        },
+                        parentSector : {
+                            page : 0,
+                            totalPage : 0
+                        },
+                        childSector : {
+                            page : 0,
+                            totalPage : 0
+                        },
+                        region : {
+                            page : 0,
+                            totalPage : 0
+                        },
+                        status : {
                             page : 0,
                             totalPage : 0
                         }
@@ -75,15 +169,30 @@
                     priorities : [],    //  �슦�꽑�닚�쐞 �젙蹂�
                     severities : [],    //  以묒슂�룄 �젙蹂�
                     fileTableConfigs : [],   //  �뙆�씪 �뾽濡쒕뱶 �젙蹂� �뀒�씠釉�
+                    inheritPartners : parameter.inheritPartners,
+                    downTotalCount : parameter.downTotalCount,
+                    usePartner : parameter.usePartner,
                 };
+
+                // �뿰愿� �씪媛� 愿��젴
+                $scope.vm.relationIssueTypes =
+                    [
+                        { id: 0, name: $filter("translate")("issue.relationIssueType1") },
+                        { id: 1, name: $filter("translate")("issue.relationIssueType2") },
+                        { id: 2, name: $filter("translate")("issue.relationIssueType3") },
+                        { id: 3, name: $filter("translate")("issue.relationIssueType4") },
+                        { id: 4, name: $filter("translate")("issue.relationIssueType5") },
+                        { id: 5, name: $filter("translate")("issue.relationIssueType6") }
+                    ];
+                $scope.vm.relationIssueType = $scope.vm.relationIssueTypes[0];
 
                 angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
 
-                //  �봽濡쒖젥�듃媛� 蹂�寃쎈릺硫� �떞�떦�옄 珥덇린�솕
+                //  �봽濡쒖젥�듃媛� 蹂�寃쎈릺硫� �떞�떦遺��꽌 珥덇린�솕
                 $scope.$watch("vm.form.projects", function (newValue, oldValue) {
                     if (angular.isDefined(newValue)) {
                         if (newValue.length < 1) {
-                            $scope.vm.form.users = [];
+                            $scope.vm.form.departments = [];
                             $scope.vm.form.issueCustomFields = [];
                         }
                         else {
@@ -93,6 +202,11 @@
                         }
                     }
                 });
+
+                $scope.$watch("vm.form.issueTypeId", function (newValue, oldValue) {
+                    $scope.vm.partnerVos = $scope.fn.getPartners();
+                });
+
 
                 //  �뾽濡쒕뱶 �뙆�씪 �궘�젣
                 function removeUploadFile(index) {
@@ -117,6 +231,11 @@
                 //  �떞�떦�옄 �궘�젣
                 function removeManager(index) {
                     $scope.vm.form.users.splice(index, 1);
+                }
+
+                // �떞�떦遺��꽌 �궘�젣
+                function removeDepartment(index) {
+                    $scope.vm.form.departments.splice(index, 1);
                 }
 
                 //  �꽟癒몃끂�듃 �씠誘몄� �뾽濡쒕뱶
@@ -262,6 +381,60 @@
                     $scope.vm.autoCompletePage.project.totalPage = result.data.page.totalPage;
                 }
 
+                //  �뾽泥댁젙蹂� autocomplete page �뾽�뜲�씠�듃
+                function getIssueCompanyFieldListCallBack(result) {
+                    $scope.vm.autoCompletePage.issueCompanyField.totalPage = result.data.page.totalPage;
+                }
+
+                // 遺��꽌�젙蹂� autocomplete page �뾽�뜲�씠�듃
+                function getIssueDepartmentListCallBack(result) {
+                    $scope.vm.autoCompletePage.department.totalPage = result.data.page.totalPage;
+                }
+
+                // ISP�젙蹂� autocomplete page �뾽�뜲�씠�듃
+                function getIssueIspFieldListCallBack(result) {
+                    $scope.vm.autoCompletePage.ispField.totalPage = result.data.page.totalPage;
+                }
+
+                // �샇�뒪�똿�젙蹂� autocomplete page �뾽�뜲�씠�듃
+                function getIssueHostingFieldListCallBack(result) {
+                    $scope.vm.autoCompletePage.hostingField.totalPage = result.data.page.totalPage;
+                }
+
+                // �뾽泥� 移댄뀒怨좊━ autocomplete page �뾽�뜲�씠�듃
+                function getCompanyTypeListCallBack(result) {
+                    $scope.vm.autoCompletePage.companyType.totalPage = result.data.page.totalPage;
+                }
+
+                // �뾽泥� 移댄뀒怨좊━ autocomplete page �뾽�뜲�씠�듃
+                function getParentSectorListCallBack(result, value) {
+                    if (value === "") {
+                        $scope.vm.form.parentSectorId = "";
+                        if ($rootScope.isDefined($scope.vm.form.parentSectors) && $rootScope.isDefined($scope.vm.form.parentSectors[0])) {
+                            $scope.vm.form.parentSectors[0].id = "";
+                        }
+                        $scope.vm.form.childSectorId = "";
+                        $scope.vm.form.childSector = "";
+                        $scope.vm.form.childSectors = [];
+                    }
+                    $scope.vm.autoCompletePage.parentSector.totalPage = result.data.page.totalPage;
+                }
+
+                // �뾽泥� 移댄뀒怨좊━ autocomplete page �뾽�뜲�씠�듃
+                function getChildSectorListCallBack(result) {
+                    $scope.vm.autoCompletePage.childSector.totalPage = result.data.page.totalPage;
+                }
+
+                // �뾽泥� 移댄뀒怨좊━ autocomplete page �뾽�뜲�씠�듃
+                function getRegionListCallBack(result) {
+                    $scope.vm.autoCompletePage.region.totalPage = result.data.page.totalPage;
+                }
+
+                // �뾽泥� 移댄뀒怨좊━ autocomplete page �뾽�뜲�씠�듃
+                function getStatusListCallBack(result) {
+                    $scope.vm.autoCompletePage.status.totalPage = result.data.page.totalPage;
+                }
+
                 function formCheck(formInvalid) {
                     if (formInvalid) {
                         return true;
@@ -274,13 +447,213 @@
                     return false;
                 }
 
+                $scope.$on("companyTypeEvent", function (event, result) {
+                    if ($rootScope.isDefined(result) && $rootScope.isDefined(result[0])) {
+                        $scope.vm.form.companyTypeId = result[0].id;
+                    }
+                });
+                $scope.$on("parentSectorEvent", function (event, result) {
+                    if ($rootScope.isDefined(result) && $rootScope.isDefined(result[0])) {
+                        $scope.vm.form.parentSectorId = result[0].id;
+                    }  else {
+                        $scope.vm.form.parentSectorId = "";
+                        if ($rootScope.isDefined($scope.vm.form.parentSectors) && $rootScope.isDefined($scope.vm.form.parentSectors[0])) {
+                            $scope.vm.form.parentSectors[0].id = "";
+                        }
+                    }
+                    $scope.vm.form.childSectorId = "";
+                    $scope.vm.form.childSector = "";
+                    $scope.vm.form.childSectors = [];
+                });
+                $scope.$on("childSectorEvent", function (event, result) {
+                    if ($rootScope.isDefined(result) && $rootScope.isDefined(result[0])) {
+                        $scope.vm.form.childSectorId = result[0].id;
+                    }
+                });
+                $scope.$on("regionEvent", function (event, result) {
+                    if ($rootScope.isDefined(result) && $rootScope.isDefined(result[0])) {
+                        $scope.vm.form.regionId = result[0].id;
+                    }
+                });
+                $scope.$on("statusEvent", function (event, result) {
+                    if ($rootScope.isDefined(result) && $rootScope.isDefined(result[0])) {
+                        $scope.vm.form.statusId = result[0].id;
+                    }
+                });
+
+                // �뾽泥댁젙蹂� 寃곌낵 媛� Event 泥섎━(set)
+                $scope.$on("companyFieldEvent", function (event, result) {
+                    if ($rootScope.isDefined(result) && $rootScope.isDefined(result[0])) {
+                        var ispFieldVo = result[0].ispFieldVo;
+                        var hostingFieldVo = result[0].hostingFieldVo;
+
+                        $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;
+                        $scope.vm.companyUrl = result[0].url;
+                        $scope.vm.companyMemo = result[0].memo;
+                        $scope.vm.form.companyTypeId = result[0].companyTypeId;
+                        $scope.vm.form.parentSectorId = result[0].parentSectorId;
+                        $scope.vm.form.childSectorId = result[0].childSectorId;
+                        $scope.vm.form.regionId = result[0].regionId;
+                        $scope.vm.form.statusId = result[0].statusId;
+                        $scope.vm.form.companyType = result[0].companyTypeName;
+                        $scope.vm.form.parentSector = result[0].parentSectorName;
+                        $scope.vm.form.childSector = result[0].childSectorName;
+                        $scope.vm.form.region = result[0].regionName;
+                        $scope.vm.form.status = result[0].statusName;
+
+                        $scope.vm.ispId = "";
+                        $scope.vm.ispName = "";
+                        $scope.vm.ispCode = "";
+                        $scope.vm.ispManager = "";
+                        $scope.vm.ispTel = "";
+                        $scope.vm.ispEmail = "";
+                        $scope.vm.ispUrl = "";
+                        $scope.vm.ispMemo = "";
+
+                        $scope.vm.hostingId = "";
+                        $scope.vm.hostingName = "";
+                        $scope.vm.hostingCode = "";
+                        $scope.vm.hostingManager = "";
+                        $scope.vm.hostingTel = "";
+                        $scope.vm.hostingEmail = "";
+                        $scope.vm.hostingUrl = "";
+                        $scope.vm.hostingMemo = "";
+
+                        if (ispFieldVo != null) {
+                            $scope.vm.form.issueIspFields[0] = angular.copy(ispFieldVo);
+                            $scope.vm.ispId = ispFieldVo.id;
+                            $scope.vm.ispName = ispFieldVo.name;
+                            $scope.vm.ispCode = ispFieldVo.code;
+                            $scope.vm.ispManager = ispFieldVo.manager;
+                            $scope.vm.ispTel = ispFieldVo.tel;
+                            $scope.vm.ispEmail = ispFieldVo.email;
+                            $scope.vm.ispUrl = ispFieldVo.url;
+                            $scope.vm.ispMemo = ispFieldVo.memo;
+                        }
+                        if (hostingFieldVo != null) {
+                            $scope.vm.form.issueHostingFields[0] = angular.copy(hostingFieldVo);
+                            $scope.vm.hostingId = hostingFieldVo.id;
+                            $scope.vm.hostingName = hostingFieldVo.name;
+                            $scope.vm.hostingCode = hostingFieldVo.code;
+                            $scope.vm.hostingManager = hostingFieldVo.manager;
+                            $scope.vm.hostingTel = hostingFieldVo.tel;
+                            $scope.vm.hostingEmail = hostingFieldVo.email;
+                            $scope.vm.hostingUrl = hostingFieldVo.url;
+                            $scope.vm.hostingMemo = hostingFieldVo.memo;
+                        }
+                    }
+                });
+
+                // ISP�젙蹂� 寃곌낵 媛� Event 泥섎━(set)
+                $scope.$on("ispFieldEvent", function (event, result) {
+                    if ($rootScope.isDefined(result) && $rootScope.isDefined(result[0])) {
+                        $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;
+                        $scope.vm.ispEmail = result[0].email;
+                        $scope.vm.ispUrl = result[0].url;
+                        $scope.vm.ispMemo = result[0].memo;
+                    }
+                });
+
+                // �샇�뒪�똿�젙蹂� 寃곌낵 媛� Event 泥섎━(set)
+                $scope.$on("hostingFieldEvent", function (event, result) {
+                    if ($rootScope.isDefined(result) && $rootScope.isDefined(result[0])) {
+                        $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;
+                        $scope.vm.hostingEmail = result[0].email;
+                        $scope.vm.hostingUrl = result[0].url;
+                        $scope.vm.hostingMemo = result[0].memo;
+                    }
+                });
+
                 function formSubmit() {
                     $rootScope.spinner = true;
+                    let inheritYn = false;
 
                     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 = "";
 
@@ -290,10 +663,42 @@
 
                             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 = [];
 
@@ -303,7 +708,16 @@
 
                             return userIds;
                         })(),
-                        removeFiles : $scope.vm.form.removeFiles,
+                        departmentIds : (function () {
+                            var departmentIds = [];
+
+                            angular.forEach($scope.vm.form.departments, function (department) {
+                                departmentIds.push(department.id);
+                            });
+
+                            return departmentIds;
+                        })(),
+
                         attachedFileIds : (function () {
                             var attachedFileIds = [];
 
@@ -315,7 +729,96 @@
 
                             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 = [];
 
@@ -341,42 +844,101 @@
                         })()
                     };
 
-                    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
+                    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
                         },
-                        fileFormDataName : "file"
-                    }).then(function (result) {
+                        function (isConfirm) {
+                            if (isConfirm) {
+                                inheritYn = true;
+                                content.inheritYn = true;
+                            }
 
-                        if (result.data.message.status === "success") {
-                            $scope.fn.cancel();
+                            Issue.modify({
+                                method : "POST",
+                                file : (function () {
+                                    var files = [];
 
-                            //  �씠�뒋 �긽�꽭 �솕硫� �슂泥�
-                            $rootScope.$broadcast("getIssueDetail", {
-                                id : parameter.id
+                                    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 = [];
 
-                            $rootScope.$broadcast("getIssueList");
-                        }
-                        else {
-                            SweetAlert.error($filter("translate")("issue.failedIssueModify"), result.data.message.message); // �씠�뒋 �닔�젙 �떎�뙣
-                        }
+                                angular.forEach($scope.vm.form.files, function (file) {
+                                    if (angular.isUndefined(file.id)) {
+                                        files.push(file);
+                                    }
+                                });
 
-                        $rootScope.spinner = false;
-                    });
+                                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;
+                        });
+                    }
                 }
 
                 function cancel() {
@@ -424,6 +986,21 @@
                     });
 
                     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;
+
                 }
 
                 //  以묒슂�룄 紐⑸줉
@@ -486,6 +1063,12 @@
                         switch (issueTypeCustomField.customFieldVo.customFieldType) {
                             case "INPUT" :
                             case "SINGLE_SELECT" :
+                            case "NUMBER" :
+                            case "DATETIME" :
+                            case "IP_ADDRESS" :
+                            case "EMAIL" :
+                            case "SITE" :
+                            case "TEL" :
                                 issueTypeCustomField.useValues = "";
                                 break;
 
@@ -524,8 +1107,8 @@
 
                 //  �씠�뒋 �긽�꽭 �젙蹂�
                 function detail() {
+                    $rootScope.spinner = true;
                     var deferred = $q.defer();
-
                     Issue.detail($resourceProvider.getContent(
                         $scope.vm.search,
                         $resourceProvider.getPageContent(0, 1))).then(function (result) {
@@ -534,14 +1117,65 @@
                             if (angular.isDefined(result.data.data)) {
                                 $scope.vm.form.title = result.data.data.title;
                                 $scope.vm.form.description = result.data.data.description;
+
                                 $scope.vm.form.projects.push(result.data.data.projectVo);
                                 $scope.vm.projectName = result.data.data.projectVo.name;
+
                                 $scope.vm.form.issueTypeId = String(result.data.data.issueTypeVo.id);
                                 $scope.vm.form.priorityId = String(result.data.data.priorityVo.id);
                                 $scope.vm.form.severityId = String(result.data.data.severityVo.id);
                                 $scope.vm.form.issueStatusId = String(result.data.data.issueStatusVo.id);
+
                                 $scope.vm.form.users = result.data.data.userVos;
+                                $scope.vm.form.departments = result.data.data.departmentVos;
                                 $scope.vm.form.files = result.data.data.attachedFileVos;
+
+                                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.companyUrl = issueCompanyFieldValue.url;
+                                    $scope.vm.companyMemo = issueCompanyFieldValue.memo;
+                                    $scope.vm.form.companyTypeId = issueCompanyFieldValue.companyTypeId;
+                                    $scope.vm.form.companyType = issueCompanyFieldValue.companyTypeName;
+                                    $scope.vm.form.parentSectorId = issueCompanyFieldValue.parentSectorId;
+                                    $scope.vm.form.parentSector = issueCompanyFieldValue.parentSectorName;
+                                    $scope.vm.form.childSectorId = issueCompanyFieldValue.childSectorId;
+                                    $scope.vm.form.childSector = issueCompanyFieldValue.childSectorName;
+                                    $scope.vm.form.regionId = issueCompanyFieldValue.regionId;
+                                    $scope.vm.form.region = issueCompanyFieldValue.regionName;
+                                    $scope.vm.form.statusId = issueCompanyFieldValue.statusId;
+                                    $scope.vm.form.status = issueCompanyFieldValue.statusName;
+                                }
+                                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.ispUrl = issueIspFieldValue.url;
+                                    $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.hostingUrl = issueHostingFieldValue.url;
+                                    $scope.vm.hostingMemo = issueHostingFieldValue.memo;
+                                }
 
                                 if ($rootScope.isDefined(result.data.data.startDate)) {
                                     $scope.vm.form.startCompleteDateRange = result.data.data.startDate + " ~ " + result.data.data.completeDate;
@@ -559,10 +1193,9 @@
                         else {
                             SweetAlert.error($filter("translate")("issue.failedToProjectDetails"), result.data.message.message); // �봽濡쒖젥�듃 �긽�꽭 �젙蹂� 議고쉶 �떎�뙣
                         }
-
+                        $rootScope.spinner = false;
                         deferred.resolve(result.data.data);
                     });
-
                     return deferred.promise;
                 }
 
@@ -606,6 +1239,25 @@
                     }
                 }
 
+                function getPartners() {
+                    if($scope.vm.form.issueTypeId === ""){
+                        if ($rootScope.issueTypeMenu != null) {
+                            $scope.vm.form.issueTypeId = $rootScope.issueTypeMenu.id
+                        }
+                    }
+                    var content = {
+                        issueTypeId : $scope.vm.form.issueTypeId,
+                    };
+                    Issue.findPartners($resourceProvider.getContent(
+                        content,
+                        $resourceProvider.getPageContent(0, 1))).then(function (result) {
+                        if (result.data.message.status === "success") {
+                            $scope.vm.partnerVos = result.data.data;
+                        }
+                    });
+
+                }
+
                 //  理쒖큹 �떎�뻾
                 function startExecute() {
 
@@ -613,7 +1265,8 @@
                         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) {
@@ -623,4 +1276,4 @@
 
                 $scope.fn.startExecute();
             }]);
-    });
+    });
\ No newline at end of file

--
Gitblit v1.8.0