UNPKG

gaf-mobile

Version:

GAF mobile Web site

111 lines (95 loc) 3.96 kB
'use strict'; angular.module('gafMobileApp') .controller('MembershipsCtrl', function (Memberships, loggedInUser, $q, $location, $filter, $window) { var _this = this; var DURATION_TYPE_MONTH = 'month'; // var EXCLUDED_PACKAGES = [17, 18, 19, 20, 21]; // in GAF AB Tests var PROFESSIONAL_MEM_PKG_ID = 8; var params = $location.search(); _this.returnUrl = params.return || '/dashboard'; _this.userCurrency = loggedInUser.getPrimaryCurrency().get(); _this.showUpsellTrialView = false; _this.error = {}; _this.loading = true; // Memberships.getUpsellTrial(DURATION_TYPE_MONTH, [_this.userCurrency.id], // EXCLUDED_PACKAGES) Memberships.getTrialPackages(DURATION_TYPE_MONTH, [_this.userCurrency.id], { 'packages[]': PROFESSIONAL_MEM_PKG_ID }) .then(function(result) { _this.loading = false; var upsellTrialObj = result.getList()[0]; _this.upsellTrial = upsellTrialObj.get(); _this.upsellTrial.benefits = upsellTrialObj.getVisibleBenefits(); // (upsellTrial only has 1 price obj with the specified duration type) _this.upsellTrialPriceDetails = _this.upsellTrial.prices[0]; // set additional price properties for subscription params _this.upsellTrialPriceDetails.isTrial = true; _this.upsellTrialPriceDetails.quantity = 1; if (params.verified === 'true' || params.subscribeToTrial === 'true') { _this.subscribe(_this.upsellTrialPriceDetails); } else { _this.showUpsellTrialView = true; } }) .catch(function() { $location.url(_this.returnUrl); }); _this.subscribe = function(priceDetails) { var isUserPaymentVerified = loggedInUser.get().status.payment_verified; if (isUserPaymentVerified) { _this.loading = true; var packageId = priceDetails.package_id; var durationType = priceDetails.duration.type; var subscribeParams = { 'currency': priceDetails.currency_id, 'duration_cycle': priceDetails.duration.cycle, 'is_trial': priceDetails.isTrial, 'quantity': priceDetails.quantity, 'auto_renew': true // auto-renew subscription by default }; return Memberships.subscribe(packageId, durationType, subscribeParams) .then(function() { _this.error = {}; $window.location.href = _this.returnUrl; }) .catch(function(error) { _this.showUpsellTrialView = true; _this.error = { subscriptionError: true }; _this.error.internalError = error.data.message; }) .finally(function() { _this.loading = false; }); } else { $location.url('/payments/verify' + '?return=/membership' + '&type=membership' + '&subtype=subscribe_trial' + '&membership=' + _this.getPriceString(_this.userCurrency.sign, _this.userCurrency.code, priceDetails.amount, priceDetails.duration.type)); } }; _this.getPriceString = function(currencySign, currencyCode, amount, duration) { return $filter('currency')(amount, currencySign) + ' ' + currencyCode + (duration ? ' / ' + duration : ''); }; _this.getBenefitDisplayText = function(benefitObj) { var benefit = benefitObj.benefit; var benefit_value = benefitObj.benefit_value; var display_name = benefit.display_name.replace('Bids', 'Jobs'); var displayText; if (benefit_value === -1) { displayText = 'Unlimited ' + display_name; } else if (benefit_value === 1) { displayText = display_name; } else if (benefit_value !== null) { displayText = benefit_value + ' ' + display_name; } else { displayText = benefit.value + ' ' + display_name; } return displayText; }; });