/** * Created by wisestone on 2017-12-15. */ 'use strict'; define([ 'app', 'angular' ], function (app, angular) { app.controller('userModifyController', ['$scope', '$rootScope', '$log', '$resourceProvider', 'User', '$uibModalInstance', 'parameter', 'SweetAlert', '$timeout', '$filter', function ($scope, $rootScope, $log, $resourceProvider, User, $uibModalInstance, parameter, SweetAlert, $timeout, $filter) { $scope.fn = { cancel: cancel, // 팝업 창 닫기 formSubmit: formSubmit, // 폼 전송 formCheck: formCheck, // 폼 체크 detail: detail, // 상세 정보 조회 withDraw : withDraw, // 회원 탈퇴 onFileSelect : onFileSelect // 프로필 업로드 }; $scope.vm = { form: { id: parameter.id, account: "", name: "", phone: "", reservationNotifyTime : "", // 이메일 알림 시간 realtimeNotify : "", // 이메일 실시간 profileImage : null, // 업로드하는 프로필 profileImageName : null, // 프로필 명 projectManagerYN : false } }; // 회원 탈퇴 function withDraw() { // 삭제 알림 SweetAlert.swal({ title : $filter("translate")("users.membershipWithdrawal"), // 회원 탈퇴 text : $filter("translate")("users.proceedWithMembershipWithdrawal"), // 회원 탈퇴를 진행하겠습니까? 회원 탈퇴를 하면 업무 공간의 모든 데이터가 사라지고 복구할 수 없습니다. type : "warning", showCancelButton : true, confirmButtonColor : "#DD6B55", confirmButtonText : $filter("translate")("users.withdrawal"), // "탈퇴" cancelButtonText : $filter("translate")("common.cancel"), // "취소" closeOnConfirm : false, closeOnCancel : true }, function (isConfirm) { SweetAlert.close(); if (isConfirm) { $rootScope.spinner = true; User.withDraw($resourceProvider.getContent( {}, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { SweetAlert.success($filter("translate")("users.successWithdrawalFromMembership"), $filter("translate")("users.completedWithdrawalFromOwlITS")); // "회원 탈퇴 성공", "OWL ITS 에서 탈퇴가 완료되었습니다." // 로그아웃 실행 - common.controller.js $broadcast $rootScope.$broadcast("logout"); } else { $timeout(function () { SweetAlert.error($filter("translate")("users.failedMemberWithdrawal"), result.data.message.message); // "회원 탈퇴 실패" }, 100); } $rootScope.spinner = false; }); } }); } // 상세 정보 조회 function detail() { User.detail($resourceProvider.getContent( { id : $rootScope.user.id, deep : "01" }, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { $scope.vm.form.name = result.data.data.name; $scope.vm.form.account = result.data.data.account; $scope.vm.form.phone = result.data.data.phone; $scope.vm.form.projectManagerYN = result.data.data.projectManagerYN; if(result.data.data.reservationNotifyTime === "realTime"){ $scope.vm.form.realtimeNotify = true; }else{ $scope.vm.form.reservationNotifyTime = ""; } } else { SweetAlert.swal($filter("translate")("users.failedToSelectUserDetail"), result.data.message.message, "error"); // "사용자 상세 정보 조회 실패" } }); } // 프로필 업로드 function onFileSelect($files) { $scope.vm.form.profileImage = $files; if ($rootScope.isDefined($files)) { $scope.vm.form.profileImageName = $files[0].name; } else { $scope.vm.form.profileImageName = ""; } } // 폼 체크 function formCheck(formInvalid) { if (formInvalid) { return true; } return false; } // 폼 전송 function formSubmit() { $rootScope.spinner = true; var content = angular.copy($scope.vm.form); content.name = $rootScope.preventXss(content.name); content.phone = $rootScope.preventXss(content.phone); content.profile = $scope.vm.form.profileImageName; if(content.realtimeNotify){ content.reservationNotifyTime = "realTime"; }else { content.reservationNotifyTime = $scope.vm.form.reservationNotifyTime; } User.modify({ method : "POST", file : $scope.vm.form.profileImage, // data 속성으로 별도의 데이터 전송 fields : { content : content }, fileFormDataName : "file" }) .then(function (result) { if (result.data.message.status === "success") { User.getUserSession({}).then(function (result) { if (result.message.status === "success") { if (result.data != null) { $rootScope.user = result.data; // 전역으로 사용하는 로그인 사용자 정보. // 전화번호 하이픈 추가하여 조회 $scope.vm.phone = $rootScope.user.phone; let hyphen = $scope.vm.phone.trim(); let phone = hyphen.replace(/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/,"$1-$2-$3"); $rootScope.user.phone = phone; } else { throw {message: $filter("translate")("users.notExistUserSession")}; // "사용자 세션이 존재하지 않습니다." } } else { throw {message: $filter("translate")("users.notExistUserSession")}; // "사용자 세션이 존재하지 않습니다." } $rootScope.spinner = false; }); $scope.fn.cancel(); } else { SweetAlert.swal({ title : $filter("translate")("users.failedToModifyUser"), // "사용자 수정 실패" text : result.data.message.message, type : "error" }); $rootScope.spinner = false; } }); } // 팝업 창 닫기 function cancel() { $rootScope.$broadcast("closeLayer"); // 팝업이 열리고 나서 js-multi, js-single 등에서 body 이벤트가 날아가는 현상 수정 $uibModalInstance.dismiss('cancel'); $(document).unbind("keydown"); // 단축키 이벤트 제거 } $scope.fn.detail(); }]); });