/** * Created by wisestone on 2018-12-10. */ 'use strict'; define([ 'app', 'angular' ], function (app, angular) { app.controller('workspacePaymentExecuteController', ['$scope', '$rootScope', '$log', '$resourceProvider', 'SweetAlert', '$uibModal', '$state', 'Payment', 'Workspace', '$timeout', '$filter', function ($scope, $rootScope, $log, $resourceProvider, SweetAlert, $uibModal, $state, Payment, Workspace, $timeout, $filter) { /* $scope.fn 상속 중 */ $scope.fn.paymentOneTime = paymentOneTime; // 정기 결제 $scope.fn.cancelNextPayment = cancelNextPayment; // 정기 결제 취소 $scope.fn.add = add; // 추가 결제 $scope.fn.modify = modify; // 정기 결제 수정 $scope.fn.detail = detail; // 결제 상세 정보 $scope.fn.changeBuyUser = changeBuyUser; // 사용자 수 변경 $scope.fn.formCheck = formCheck; // 폼 체크 $scope.fn.agreeTerm = agreeTerm; // 약관 동의 팝업 표시 $scope.fn.modifyWorkspace = modifyWorkspace; // 업무 공간 명 수정 $scope.fn.initCreditCard = initCreditCard; // 카드 + 상품 정보를 초기화한다. /* $scope.vm 상속 중 */ $scope.vm.edit = false; // 업무 공간명 수정 필드 표시 여부 제어 $scope.vm.view = { buyUser : 0, // 이전 결제 정보 사용자 type : "MONTH", // 결제 유형 - 매달 결제 price : 0 // 가격 }; $scope.vm.form = { workspaceId : "", buyUser : 0, type : "MONTH", cardNumber1 : "", cardNumber2 : "", cardNumber3 : "", cardNumber4 : "", expireMonth : "", expireYear : "", expireYearTmp : "", birth : "", cardPwd : "", paymentAmountTemp : "", // 클라이언트에서 사용자 수를 변경할 때 보여줄 결제 금액 - 금액은 서버에서 다시 계산한다. confirm : false // 약관 동의 }; var BILLING_AMOUNT = 6; // 결제 금액 var DEFAULT_BILLING_AMOUNT = 9; // 10인 이하 가격 // 사용자 가격 보기 $scope.$watch("vm.form.buyUser", function (newValue) { if (newValue < 11) { $scope.vm.form.paymentAmountTemp = (DEFAULT_BILLING_AMOUNT * $scope.vm.workspaceVo.usdKrw); } else if (newValue > 10) { var totalAmount = (BILLING_AMOUNT * $scope.vm.workspaceVo.usdKrw * newValue); var sale = newValue * 0.01; var discount = (totalAmount * (sale/100)); $scope.vm.form.paymentAmountTemp = Math.floor(totalAmount - discount); } }); // 결제 상세 정보 $scope.$on("getPaymentDetail", function () { $scope.fn.detail(); }); $scope.$watch("vm.workspaceVo", function (newValue) { if ($rootScope.isDefined(newValue.id)) { $scope.fn.detail(); } }); // 카드 + 상품 정보를 초기화한다. function initCreditCard() { $scope.vm.form = { workspaceId : "", buyUser : 0, type : "MONTH", cardNumber1 : "", cardNumber2 : "", cardNumber3 : "", cardNumber4 : "", expireMonth : "", expireYear : "", expireYearTmp : "", birth : "", cardPwd : "", paymentAmountTemp : "", // 클라이언트에서 사용자 수를 변경할 때 보여줄 결제 금액 - 금액은 서버에서 다시 계산한다. confirm : false // 약관 동의 }; $scope.vm.view = { buyUser : 0, // 이전 결제 정보 사용자 type : "MONTH", // 결제 유형 - 매달 결제 price : 0 // 가격 }; } // 정기 결제를 신청한다. function paymentOneTime() { $rootScope.spinner = true; $scope.vm.form.expireYear = "20" + $scope.vm.form.expireYearTmp; $scope.vm.form.workspaceId = $scope.vm.workspaceVo.id; var content = angular.copy($scope.vm.form); // 암호화 시간동안 프로그래스바 못올리는 현상 수정 $timeout(function () { content.cardNumber1 = $rootScope.encryption($scope.vm.form.cardNumber1); content.cardNumber2 = $rootScope.encryption($scope.vm.form.cardNumber2); content.cardNumber3 = $rootScope.encryption($scope.vm.form.cardNumber3); content.cardNumber4 = $rootScope.encryption($scope.vm.form.cardNumber4); content.expireMonth = $rootScope.encryption($scope.vm.form.expireMonth); content.expireYear = $rootScope.encryption($scope.vm.form.expireYear); content.cardPwd = $rootScope.encryption($scope.vm.form.cardPwd); content.birth = $rootScope.encryption($scope.vm.form.birth); Payment.paymentOneTime($resourceProvider.getContent( content, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { // 카드 + 상품 정보를 초기화한다. $scope.fn.initCreditCard(); // 정기 결제 정보 조회 $scope.fn.detail(); // 내가 관리하는 업무 공간 정보를 조회한다. $scope.fn.findMyWorkspace(); SweetAlert.success($filter("translate")("managementWorkspace.completedPayment"), result.data.message.message); // "결제 완료" } else { SweetAlert.error($filter("translate")("managementWorkspace.failedPayment"), result.data.message.message); // "결제 실패" } $rootScope.spinner = false; }); }, 100); } // 정기 결제를 취소한다. function cancelNextPayment() { //var monthText = "정기 결제를 취소하겠습니까? 사용 요금을 제외한 금액이 7일 이내에 환불 됩니다."; // 삭제 알림 SweetAlert.swal({ title : $filter("translate")("managementWorkspace.cancelRegularPayment"), // "정기 결제 취소" text : $filter("translate")("managementWorkspace.cancelTheRegularPaymentReceive"), // "정기 결제를 취소하겠습니까? 사용 요금을 제외한 금액이 7일 이내에 환불 됩니다." type : "warning", showCancelButton : true, confirmButtonColor : "#DD6B55", confirmButtonText : $filter("translate")("managementWorkspace.cancelRegularPayment"), // "정기 결제 취소" cancelButtonText : $filter("translate")("common.close"), // "닫기" closeOnConfirm : false, closeOnCancel : true }, function (isConfirm) { SweetAlert.close(); if (isConfirm) { $rootScope.spinner = true; $scope.vm.form.workspaceId = $scope.vm.workspaceVo.id; Payment.cancelNextPayment($resourceProvider.getContent( $scope.vm.form, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { $state.go($state.current, {}, {reload : true}); } else { $timeout(function () { SweetAlert.error($filter("translate")("managementWorkspace.failedToCancelPayment"), result.data.message.message); // "결제 취소 실패" }, 100); } $rootScope.spinner = false; }); } }); } // 폼 체크 function formCheck() { if (!$scope.vm.form.confirm) { return true; } if (!$rootScope.isDefined($scope.vm.form.cardNumber1) || !$rootScope.isDefined($scope.vm.form.cardNumber2) || !$rootScope.isDefined($scope.vm.form.cardNumber3) || !$rootScope.isDefined($scope.vm.form.cardNumber4) || !$rootScope.isDefined($scope.vm.form.expireMonth) || !$rootScope.isDefined($scope.vm.form.expireYearTmp) || !$rootScope.isDefined($scope.vm.form.birth) || !$rootScope.isDefined($scope.vm.form.cardPwd) || !$rootScope.isDefined($scope.vm.form.type)) { return true; } if ($scope.vm.form.cardNumber1.length !== 4 || $scope.vm.form.cardNumber2.length !== 4 || $scope.vm.form.cardNumber3.length !== 4 || $scope.vm.form.cardNumber4.length !== 4 || $scope.vm.form.expireMonth.length !== 2 || $scope.vm.form.expireYearTmp.length !== 2 || $scope.vm.form.birth.length < 6 || $scope.vm.form.cardPwd.length !== 2) { return true; } // 사용자 수는 1명 이상이어야 한다. if ($scope.vm.form.buyUser < 1) { return true; } return false; } // 결제 정보를 조회한다. function detail() { var content = { workspaceId : $scope.vm.workspaceVo.id }; if (!$rootScope.isDefined(content.workspaceId)) { return; } Payment.detail($resourceProvider.getContent(content, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { if (result.data.data != null) { $scope.vm.view.buyUser = result.data.data.buyUser; $scope.vm.view.type = result.data.data.type; $scope.vm.view.price = result.data.data.price } } else { SweetAlert.error($filter("translate")("managementWorkspace.failedToPaymentInformation"), result.data.message.message); // "결제 정보 조회 실패" } }); } // 업무 공간 명 수정 function modifyWorkspace() { var content = { workspaceId : $scope.vm.workspaceVo.id, name : $scope.vm.workspaceVo.name }; Workspace.modify($resourceProvider.getContent( content, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { $scope.vm.edit = false; $rootScope.$broadcast("refreshWorkspace"); } else { SweetAlert.error($filter("translate")("managementWorkspace.failedToModifyWorkspaceName"), result.data.message.message); // "업무 공간 명 수정 실패" } }); } // 사용자 수 변경 function changeBuyUser(changeType) { if (changeType === "PLUS") { if ($scope.vm.form.buyUser < 999) { $scope.vm.form.buyUser++; } } else { if ($scope.vm.form.buyUser > 0) { $scope.vm.form.buyUser--; } } } // 정기 결제 수정 function modify() { $uibModal.open({ templateUrl : 'views/workspace/workspacePaymentModify.html', size : "md", controller : 'workspacePaymentModifyController', backdrop : 'static', resolve : { parameter : function () { return { workspaceId : $scope.vm.workspaceVo.id }; } } }); } // 약관 동의 팝업 표시 function agreeTerm() { $uibModal.open({ templateUrl : 'views/workspace/workspacePaymentAgreeTerm.html', size : "md", controller : 'workspacePaymentAgreeTermController', backdrop : 'static' }); } // 추가 결제 function add() { $uibModal.open({ templateUrl : 'views/workspace/workspacePaymentAdd.html', size : "md", controller : 'workspacePaymentAddController', backdrop : 'static', resolve : { parameter : function () { return { workspaceId : $scope.vm.workspaceVo.id, usdKrw : $scope.vm.workspaceVo.usdKrw, maxUser : $scope.vm.workspaceVo.maxUser }; } } }); } } ]); } );