/**
|
* 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
|
};
|
}
|
}
|
});
|
}
|
}
|
]);
|
}
|
);
|