| | |
| | | formSubmit : formSubmit, // 폼 전송 |
| | | formCheck : formCheck, // 폼 체크 |
| | | onChangeEmailTemplate : onChangeEmailTemplate, // 이메일 템플릿 선택시 실행 |
| | | getEmailTemplateList : getEmailTemplateList // 이메일 템플릿 목록 가져오기 |
| | | // showEmailTemplate : showEmailTemplate, |
| | | getEmailTemplateList : getEmailTemplateList, // 이메일 템플릿 목록 가져오기 |
| | | getAccount : getAccount, |
| | | onFileSelect : onFileSelect, // 파일 첨부 |
| | | removeUploadFile : removeUploadFile, // 업로드하려는 특정 파일을 삭제 |
| | | imageUpload : imageUpload, // 섬머노트 이미지 업로드 |
| | | }; |
| | | |
| | | $scope.vm = { |
| | |
| | | ispVos : parameter.ispVos, |
| | | hostingVos : parameter.hostingVos, |
| | | partners : parameter.partnersAll.slice(), |
| | | html : "issueSendMailPartners.html", |
| | | html : "", |
| | | tab : "SEND_TEMPLATE", |
| | | form : { |
| | | id : parameter.issueId, // 이슈 번호 |
| | | projects : [{ id : parameter.projectId}], // 프로젝트 |
| | | mailUsers : parameter.partners.slice() // 메일 전송받는 사용자 |
| | | mailUsers : parameter.partners.slice(), // 메일 전송받는 사용자 |
| | | account : [{account : [], name : [], id : []}], |
| | | files : [], // 업로드 파일 |
| | | attachedFiles : [], // 섬머노트로 파일 업로드를 할 경우 서버에서 pk를 따고 issue id와 연동 작업이 필요하다. |
| | | }, |
| | | userName : "", |
| | | autoCompletePage : { |
| | |
| | | }, |
| | | emailTitle : "", |
| | | emailTemplateId : -1, |
| | | emailTemplates : [] |
| | | emailTemplates : [], |
| | | emailTemplateType : "", |
| | | }; |
| | | |
| | | angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); |
| | | |
| | | function onChangeEmailTemplate() { |
| | | var content = { |
| | | id : $scope.vm.emailTemplateId |
| | | templateType : $scope.vm.emailTemplateType, |
| | | issueId : parameter.issueId |
| | | } |
| | | EmailTemplate.find($resourceProvider.getContent( |
| | | content, |
| | |
| | | $scope.vm.html = result.data.data.template; |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedIssueMail"), result.data.message.message); // "이슈 메일 발송 실패" |
| | | $scope.vm.html = ""; |
| | | //SweetAlert.warning($filter("translate")("issue.selectedPartnersMail"),$filter("translate")("issue.selectedPartnersTemplate")); // option 선택 경고 |
| | | } |
| | | |
| | | $rootScope.spinner = false; |
| | |
| | | |
| | | function getEmailTemplateList() { |
| | | $scope.vm.emailTemplates.push({ |
| | | id : 1, |
| | | templateType : "ISSUE_SEND_1", |
| | | title : "템플릿1" |
| | | }); |
| | | |
| | | $scope.vm.emailTemplates.push({ |
| | | id : 2, |
| | | templateType : "ISSUE_SEND_2", |
| | | title : "템플릿2" |
| | | }); |
| | | |
| | | |
| | | $scope.vm.emailTemplates.push({ |
| | | id : 3, |
| | | templateType : "ISSUE_SEND_3", |
| | | title : "템플릿3" |
| | | }); |
| | | |
| | | $scope.vm.emailTemplateId = 1; |
| | | $scope.vm.emailTitle = ""; |
| | | $scope.vm.emailTemplates.forEach(function (emailTemplate) { |
| | | if (emailTemplate.id === $scope.vm.emailTemplateId) { |
| | | $scope.vm.emailTitle = emailTemplate.title; |
| | | 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) { |
| | |
| | | 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(); |
| | |
| | | return deferred.promise; |
| | | } |
| | | |
| | | // 메일 주소 추출 |
| | | 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; |
| | | |
| | | 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 { |
| | | $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]; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | $scope.$on("getMailTarget", function (event, result) { |
| | | $scope.fn.getAccount(result); |
| | | }); |
| | | |
| | | $scope.fn.getAccount(); |
| | | $scope.fn.getEmailTemplateList(); |
| | | |
| | | }]); |
| | | |
| | | }); |