From 916a3cbabe4e50062fce61ff6f2f5d46c05dfbd1 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 17 3월 2022 17:47:45 +0900
Subject: [PATCH] - api로 이슈 추가 시 url/ip로 업체 찾는 코드 수정

---
 src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js |  328 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 285 insertions(+), 43 deletions(-)

diff --git a/src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js b/src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js
index 683d4f0..f1b891f 100644
--- a/src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js
@@ -5,8 +5,8 @@
         'angular'
     ],
     function (app, angular) {
-        app.controller('issueSendMailPartnersController', ['$scope', '$rootScope', '$q','$log', '$resourceProvider', '$uibModalInstance', '$controller', '$injector', 'SweetAlert', '$filter', 'parameter', 'Issue',
-            function ($scope, $rootScope, $q, $log, $resourceProvider, $uibModalInstance, $controller, $injector, SweetAlert, $filter, parameter, Issue) {
+        app.controller('issueSendMailPartnersController', ['$scope', '$rootScope', '$q','$log', '$resourceProvider', '$uibModalInstance', '$controller', '$injector', 'SweetAlert', '$filter', 'parameter', 'Issue', 'EmailTemplate',
+            function ($scope, $rootScope, $q, $log, $resourceProvider, $uibModalInstance, $controller, $injector, SweetAlert, $filter, parameter, Issue, EmailTemplate) {
 
                 $scope.fn = {
                     getUserListCallBack : getUserListCallBack,  //  �궗�슜�옄 auto complete callback function
@@ -15,20 +15,28 @@
                     removeMailTarget : removeMailTarget,
                     formSubmit : formSubmit,    //  �뤌 �쟾�넚
                     formCheck : formCheck,   //  �뤌 泥댄겕
-                    changeTemplate : changeTemplate,
-                    // showEmailTemplate : showEmailTemplate,
+                    onChangeEmailTemplate : onChangeEmailTemplate, // �씠硫붿씪 �뀥�뵆由� �꽑�깮�떆 �떎�뻾
+                    getEmailTemplateList : getEmailTemplateList, // �씠硫붿씪 �뀥�뵆由� 紐⑸줉 媛��졇�삤湲�
+                    getAccount : getAccount,
+                    onFileSelect : onFileSelect,    //  �뙆�씪 泥⑤�
+                    removeUploadFile : removeUploadFile,    //  �뾽濡쒕뱶�븯�젮�뒗 �듅�젙 �뙆�씪�쓣 �궘�젣
+                    imageUpload : imageUpload,  //  �꽟癒몃끂�듃 �씠誘몄� �뾽濡쒕뱶
                 };
 
                 $scope.vm = {
                     companyVos : parameter.companyVos,
                     ispVos : parameter.ispVos,
                     hostingVos : parameter.hostingVos,
-                    partners : parameter.partnersAll.slice(),
+                    partners : parameter.partnersAll,
+                    html : "",
+                    tab : "SEND_TEMPLATE",
                     form : {
                         id : parameter.issueId,  //  �씠�뒋 踰덊샇
-                        template : "ISSUE_SEND_2",
                         projects : [{ id : parameter.projectId}],  //  �봽濡쒖젥�듃
-                        mailUsers : parameter.partners.slice()   //  硫붿씪 �쟾�넚諛쏅뒗 �궗�슜�옄
+                        mailUsers : parameter.partners,   //  硫붿씪 �쟾�넚諛쏅뒗 �궗�슜�옄
+                        account : [{account : [], name : [], id : []}],
+                        files : [], //  �뾽濡쒕뱶 �뙆�씪
+                        attachedFiles : [], //  �꽟癒몃끂�듃濡� �뙆�씪 �뾽濡쒕뱶瑜� �븷 寃쎌슦 �꽌踰꾩뿉�꽌 pk瑜� �뵲怨� issue id�� �뿰�룞 �옉�뾽�씠 �븘�슂�븯�떎.
                     },
                     userName : "",
                     autoCompletePage : {
@@ -36,14 +44,196 @@
                             page : 0,
                             totalPage : 0
                         }
-                    }
+                    },
+                    emailTitle : "",
+                    emailTemplateId : -1,
+                    emailTemplates : [],
+                    emailTemplateType : "",
                 };
 
                 angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
 
+                function onChangeEmailTemplate() {
+                    var content = {
+                        templateType : $scope.vm.emailTemplateType,
+                        issueId : parameter.issueId
+                    }
+                    EmailTemplate.find($resourceProvider.getContent(
+                        content,
+                        $resourceProvider.getPageContent(0, 10))).then(function (result) {
+
+                        if (result.data.message.status === "success") {
+                            $scope.vm.html = result.data.data.template;
+                        }
+                        else {
+                            $scope.vm.html = "";
+                            //SweetAlert.warning($filter("translate")("issue.selectedPartnersMail"),$filter("translate")("issue.selectedPartnersTemplate")); // option �꽑�깮 寃쎄퀬
+                        }
+
+                        $rootScope.spinner = false;
+                    });
+                }
+
+                function getEmailTemplateList() {
+                    $scope.vm.emailTemplates.push({
+                            templateType : "ISSUE_SEND_1",
+                            title : "�뀥�뵆由�1"
+                    });
+
+                    $scope.vm.emailTemplates.push({
+                            templateType : "ISSUE_SEND_2",
+                            title : "�뀥�뵆由�2"
+                    });
+
+
+                    $scope.vm.emailTemplates.push({
+                            templateType : "ISSUE_SEND_3",
+                            title : "�뀥�뵆由�3"
+                    });
+
+                    $scope.vm.emailTemplateId = 1;
+                    $scope.vm.emailTitle = "";
+                    if ($rootScope.isDefined($scope.vm.emailTemplateType)) {
+                        $scope.vm.emailTemplates.forEach(function (emailTemplate) {
+                            if (emailTemplate.templateType === $scope.vm.emailTemplateType) {
+                                $scope.vm.emailTitle = emailTemplate.title;
+                            }
+                        })
+                    }
+                }
+
+                //  �꽟癒몃끂�듃 �씠誘몄� �뾽濡쒕뱶
+                function imageUpload($files) {
+                    var listFiles = [];
+                    var uploadFileSize = 0;
+
+                    for (var count in $files) {
+                        var $file = $files[count];
+
+                        if (typeof ($file) == "object") {
+                            uploadFileSize += $file.size;
+
+                            //  �뙆�씪�떦 �슜�웾 �젣�븳 10MB
+                            if ($file.size > $rootScope.fileByte.image) {
+                                SweetAlert.error($filter("translate")("issue.capacityExceededImageFile"), $filter("translate")("issue.attachedOnlyImageFiles10mb")); // "�씠誘몄� �뙆�씪 �슜�웾 珥덇낵", "10MB �씠�븯�쓽 �씠誘몄� �뙆�씪留� 泥⑤�媛� 媛��뒫�빀�땲�떎."
+                                listFiles = [];
+                                break;
+                            }
+
+                            //  �뿬�윭嫄댁쓽 �뙆�씪�쓣 �븳踰덉뿉 �뾽濡쒕뱶�븷 寃쎌슦 �젣�븳 300MB
+                            if (uploadFileSize > $rootScope.fileByte.file) {
+                                SweetAlert.error($filter("translate")("issue.capacityExceededImageFile"), $filter("translate")("issue.attachedMultipleImageFiles100mb")); // "�씠誘몄� �뙆�씪 �슜�웾 珥덇낵", "�뿬�윭 嫄댁쓽 �씠誘몄�瑜� �븳踰덉뿉 泥⑤��븷 寃쎌슦 100MB �씠�븯源뚯�留� 泥⑤�媛� 媛��뒫�빀�땲�떎."
+                                listFiles = [];
+                                break;
+                            }
+
+                            if (!$rootScope.checkImageType($file)) {
+                                SweetAlert.error($filter("translate")("issue.limitImageFile"), $filter("translate")("issue.canBeUploadedOnlyImageFiles")); // "�씠誘몄� �뙆�씪 �젣�븳", "�씠誘몄� �뙆�씪留� �뾽濡쒕뱶 媛��뒫�빀�땲�떎. - bmp, jpg, jpeg, png, tif"
+                                listFiles = [];
+                                break;
+                            }
+
+                            if (!angular.isDefined($file.name)) {
+                                var fileType = $file.type.split("/");
+                                var imageType = "";
+
+                                if (fileType[0] === "image") {
+                                    imageType = "." + fileType[1];
+                                }
+
+                                $file.name = new Date().getTime() + imageType;
+                            }
+                            else {
+                                if ($file.name.indexOf(';') !== -1) {
+                                    SweetAlert.error($filter("translate")("issue.nameErrorImageFile"), $filter("translate")("issue.cannotUploadFileNameSpecialCharacters")); // "�씠誘몄� �뙆�씪紐� �삤瑜�", "�뙆�씪紐낆뿉 �듅�닔臾몄옄(;)媛� �뱾�뼱媛�硫� �뾽濡쒕뱶 �븷 �닔 �뾾�뒿�땲�떎."
+                                    listFiles = [];
+                                    break;
+                                }
+                            }
+
+                            listFiles.push($file);
+                        }
+                    }
+
+                    //  �뙆�씪 �뾽濡쒕뱶 寃�利앹쓣 嫄곗튇 �뙆�씪�씠 1媛쒖씠�긽 議댁옱�븷 寃쎌슦�뿉留� �떎�뻾
+                    if (listFiles.length > 0) {
+                        AttachedFile.add({
+                            method : "POST",
+                            file : listFiles,
+                            //      data �냽�꽦�쑝濡� 蹂꾨룄�쓽 �뜲�씠�꽣 �쟾�넚
+                            fields : {
+                                content : {
+                                    workspaceId : $rootScope.user.lastWorkspaceId
+                                }
+                            },
+                            fileFormDataName : "file"
+                        })
+                            .then(function (result) {
+                                if (result.data.message.status === "success") {
+                                    angular.forEach(result.data.attachedFiles, function (fileInfo) {
+                                        $scope.vm.summerNote.editor.summernote("editor.insertImage", fileInfo.path);
+                                        $scope.vm.form.attachedFiles.push(fileInfo);
+                                    });
+                                }
+                                else {
+                                    SweetAlert.error($filter("translate")("issue.errorFileUpload"), result.data.message.message); // �뙆�씪 �뾽濡쒕뱶 �삤瑜�
+                                }
+                            });
+                    }
+                }
+
+                //  �뙆�씪 �뾽濡쒕뱶�뿉 �궗�슜
+                function onFileSelect($files) {
+                    var uploadFileSize = 0;
+
+                    //  �씠�쟾�뿉 泥⑤��븳 �뙆�씪�씠 �엳�쓣 寃쎌슦 �쟾泥� �뾽濡쒕뱶 �슜�웾�뿉 �룷�븿
+                    angular.forEach($scope.vm.form.files, function ($file) {
+                        uploadFileSize += $file.size;
+                    });
+
+                    for (var count in $files) {
+                        var $file = $files[count];
+
+                        if (typeof ($file) == "object") {
+                            uploadFileSize += $file.size;
+
+                            //  �뙆�씪�떦 �슜�웾 �젣�븳 300MB
+                            if (($file.size > $rootScope.fileByte.file) || (uploadFileSize > $rootScope.fileByte.file)) {
+                                SweetAlert.error($filter("translate")("issue.attachmentCapacityExceeded"), $filter("translate")("issue.canAttachFileUpTo100mb")); // "泥⑤� �뙆�씪 �슜�웾 珥덇낵", "100MB �씠�븯源뚯�留� �뙆�씪 泥⑤�媛� 媛��뒫�빀�땲�떎."
+                                break;
+                            }
+
+                            //  �뙆�씪�쓣 �뾽濡쒕뱶�븷 �븣 �뙆�씪 �쑀�삎�쓣 �솗�씤�빐二쇰뒗 湲곕뒫 - �뿀�슜�릺吏� �븡�� �솗�옣�옄�씪 �븣�뒗 泥⑤� 湲덉�
+                            if (!$rootScope.checkFileType($file)) {
+                                SweetAlert.error($filter("translate")("issue.limitAttachmentExtensions"), $filter("translate")("issue.notAllowedAttachment")); // "泥⑤� �뙆�씪 �솗�옣�옄 �젣�븳", "泥⑤�媛� �뿀�슜�릺吏� �븡�뒗 �뙆�씪�엯�땲�떎."
+                                break;
+                            }
+
+                            if ($file.name.indexOf(';') !== -1) {
+                                SweetAlert.error($filter("translate")("issue.nameErrorAttachment"), $filter("translate")("issue.cannotUploadFileNameSpecialCharacters")); // "泥⑤� �뙆�씪紐� �삤瑜�", "�뙆�씪紐낆뿉 �듅�닔臾몄옄(;)媛� �뱾�뼱媛�硫� �뾽濡쒕뱶 �븷 �닔 �뾾�뒿�땲�떎."
+                                break;
+                            }
+
+                            $file.index = count;
+                            $scope.vm.form.files.push($file);
+                        }
+                    }
+                }
+
+                //  �뾽濡쒕뱶 �뙆�씪 �궘�젣
+                function removeUploadFile(index) {
+                    $scope.vm.form.files.splice(index, 1);
+
+                    angular.forEach($scope.vm.form.files, function (file, index) {
+                        file.index = index;
+                    });
+                }
+
                 //  �궗�슜�옄 �궘�젣
                 function removeMailTarget(index) {
-                    $scope.vm.form.mailUsers.splice(index, 1);
+                    $scope.vm.form.account[0].account.splice(index, 1);
+                    $scope.vm.form.account[0].name.splice(index, 1);
+                    $scope.vm.form.account[0].id.splice(index, 1);
                 }
 
                 function formCheck(formInvalid) {
@@ -62,23 +252,41 @@
                 function formSubmit() {
                     $rootScope.spinner = true;
                     var content = {
-                        id : $scope.vm.form.id,
-                        template : $scope.vm.form.template,
+                        id : $scope.vm.emailTemplateId,
+                        template : $scope.vm.html,
+                        title : $scope.vm.emailTitle,
+                        issueId : $scope.vm.form.id,
                         sendEmails : (function () {
                             var sendEmails = [];
 
-                            angular.forEach($scope.vm.form.mailUsers, function (user) {
-                                sendEmails.push($rootScope.encryption(user.account));
-                            });
+                            for(var i=0; i < $scope.vm.form.account[0].account.length; i++) {
+                                sendEmails.push($rootScope.encryption($scope.vm.form.account[0].account[i]));
+                            }
 
                             return sendEmails;
                         })(),
+                        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;
+                        })(),
                     };
 
-                    Issue.sendEmailPartners($resourceProvider.getContent(
-                        content,
-                        $resourceProvider.getPageContent(0, 10))).then(function (result) {
-
+                    Issue.sendEmailPartners({
+                        method : "POST",
+                        file : $scope.vm.form.files,
+                        //      data �냽�꽦�쑝濡� 蹂꾨룄�쓽 �뜲�씠�꽣 �쟾�넚
+                        fields : {
+                            content : content
+                        },
+                        fileFormDataName : "file"
+                    }).then(function (result) {
                         if (result.data.message.status === "success") {
                             SweetAlert.success($filter("translate")("issue.succeededIssueMail"), $filter("translate")("issue.sentToTheSelectedUser")); // "�씠�뒋 硫붿씪 諛쒖넚 �셿猷�"
                             $scope.fn.cancel();
@@ -124,36 +332,70 @@
                     return deferred.promise;
                 }
 
-                function changeTemplate(templateId){
-                    $scope.vm.form.template = templateId;
+                // 硫붿씪 二쇱냼 異붿텧
+                function getAccount(partners) {
+                    if (partners != null) {
+                        var index = partners.length-1;
+                        var id = partners[index].id;
+                        var name = partners[index].name;
+                        var account = partners[index].account;
 
-                    var elements = document.getElementsByClassName("TemplateIMG");
-                    for (let i = elements.length - 1; i >= 0; i--) {
-                        if (elements[i].id === templateId) {
-                            elements[i].className += " TemplateIMG-selected";
+                        if(account != null && account.indexOf(",") !== -1) {
+                            account = partners[index].account.split(",");
+                            for (var i = 0; i < account.length; i++) {
+                                $scope.vm.form.account[0].account[index+i] = account[i].trim();
+                                $scope.vm.form.account[0].name[index+i] = name;
+                                $scope.vm.form.account[0].id[index+i] = id;
+                            }
                         } else {
-                            elements[i].className = "TemplateIMG";
+                            $scope.vm.form.account[0].account[index] = account;
+                            $scope.vm.form.account[0].name[index] = name;
+                            $scope.vm.form.account[0].id[index] = id;
+                        }
+                    } else {
+                        if (parameter.partners != null) {
+                            var account = "";
+                            var name = "";
+                            var id = "";
+                            var accountArr = [];
+                            var nameArr = [];
+                            var idArr =[];
+                            angular.forEach(parameter.partners, function (partner) {
+                                id = partner.id;
+                                account = partner.account;
+                                name = partner.name;
+                                if(account != null && account.indexOf(",") !== -1) {
+                                    //硫붿씪二쇱냼媛� �뿬�윭媛쒖씪寃쎌슦 遺꾨━ 諛� 怨듬갚 �젣嫄�
+                                    account = partner.account.split(",");
+                                    for (var i = 0; i < account.length; i++) {
+                                        accountArr.push(account[i].trim());
+                                        nameArr.push(name);
+                                        idArr.push(id);
+                                    }
+                                } else if(account != null) {
+                                    accountArr.push(account);
+                                    nameArr.push(name);
+                                    idArr.push(id);
+                                }
+                            });
+                            if(accountArr != null && accountArr.length > 0) {
+                                for (var i = 0; i < accountArr.length; i++) {
+                                    $scope.vm.form.account[0].account[i] = accountArr[i];
+                                    $scope.vm.form.account[0].name[i] = nameArr[i];
+                                    $scope.vm.form.account[0].id[i] = idArr[i];
+                                }
+                            }
                         }
                     }
-
-                    // for(let i = 0 ; i <= 3 ; i++){
-                    //     $('#ISSUE_SEND_'+i).click(function(){
-                    //         $('#Email-Template'+i,'#Email-Template4').slideToggle('slow');
-                    //     });
-                    // }
-
-                    $("#ISSUE_SEND_1").click(function () {
-                        $("#Email-Template1,#Email-Template4").slideToggle(0);
-                    });
-
-                    $("#ISSUE_SEND_2").click(function () {
-                        $("#Email-Template2,#Email-Template4").slideToggle(0);
-                    });
-
-                    $("#ISSUE_SEND_3").click(function() {
-                        $("#Email-Template3,#Email-Template4").slideToggle(0);
-                    });
                 }
+
+                $scope.$on("getMailTarget", function (event, result) {
+                    $scope.fn.getAccount(result);
+                });
+
+                $scope.fn.getAccount();
+                $scope.fn.getEmailTemplateList();
+
             }]);
 
     });

--
Gitblit v1.8.0