diff options
| author | Jules Laplace <jules@okfoc.us> | 2015-01-30 14:44:15 -0500 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2015-01-30 14:47:23 -0500 |
| commit | c9152e122eb6dd2d724eac17b2fa322bf21a5894 (patch) | |
| tree | 07c8d8d489177e1aa648bc79c730d3f5a55f851b | |
| parent | 3bccb164a5ea792da28ca0bc9d69cce1b4ffb6a5 (diff) | |
separate compute from update
| -rw-r--r-- | public/assets/javascripts/ui/site/EditSubscriptionModal.js | 72 |
1 files changed, 49 insertions, 23 deletions
diff --git a/public/assets/javascripts/ui/site/EditSubscriptionModal.js b/public/assets/javascripts/ui/site/EditSubscriptionModal.js index e3172d0..8952e42 100644 --- a/public/assets/javascripts/ui/site/EditSubscriptionModal.js +++ b/public/assets/javascripts/ui/site/EditSubscriptionModal.js @@ -2,7 +2,8 @@ var EditSubscriptionModal = ModalFormView.extend({ el: ".mediaDrawer.editSubscription", action: "/api/subscription", - method: "put", + updateAction: "/api/subscription", + destroyAction: "/api/subscription/destroy", fixedClose: true, subscriber: null, @@ -51,7 +52,7 @@ var EditSubscriptionModal = ModalFormView.extend({ load: function(){ this.reset() if (this.loaded) { return this.show() } - $.get("/api/subscription", function(data){ + $.get(this.action, function(data){ this.loaded = true if (data.subscriber) { this.subscriber = data.subscription @@ -80,39 +81,64 @@ var EditSubscriptionModal = ModalFormView.extend({ this.__super__.show.call(this) }, + calculateTotals: function(subscriber, plan){ + var t = {} + t.is_pro = plan.name == "pro" + t.is_monthly = subscriber.plan_period == "monthly" + t.plan_price = t.is_monthly ? plan.monthly_price : plan.yearly_price + t.basic_layout_price = t.is_monthly ? plan.basic_layout_monthly_price : plan.basic_layout_yearly_price + t.basic_layout_total = subscriber.basic_layouts * t.basic_layout_price + t.pro_layout_price = t.is_monthly ? plan.pro_layout_monthly_price : plan.pro_layout_yearly_price + t.pro_layout_total = t.is_pro ? subscriber.pro_layouts * t.pro_layout_price : 0 + t.plan_total = t.plan_price + t.basic_layout_total + t.pro_layout_total + return t + }, + updateTotals: function(){ var subscriber = this.subscriber var plan = this.plans[ this.plan_levels[ subscriber.plan_type ] ] - var is_pro = plan.name == "pro" - var is_monthly = subscriber.plan_period == "monthly" + var totals = this.calculateTotals(subscriber, plan) - var plan_price = is_monthly ? plan.monthly_price : plan.yearly_price - this.$planType.html( plan.name ) - this.$planCost.toDollars( plan_price ) + this.$planType.html ( plan.name ) + this.$planCost.toDollars ( totals.plan_price ) - this.$billingInterval.html( is_monthly ? "mo." : "yr." ) - this.$proLayoutRow.toggle( is_pro ) + this.$billingInterval.html ( totals.is_monthly ? "mo." : "yr." ) + this.$proLayoutRow.toggle ( totals.is_pro ) - var basic_layout_price = is_monthly ? plan.basic_layout_monthly_price : plan.basic_layout_yearly_price - var basic_layout_total = subscriber.basic_layouts * basic_layout_price - this.$basicLayoutCost.toDollars( basic_layout_price ) - this.$basicLayoutQuantity.html( subscriber.basic_layouts ) - this.$basicLayoutTotal.toDollars( basic_layout_total ) + this.$basicLayoutCost.toDollars ( totals.basic_layout_price ) + this.$basicLayoutQuantity.html ( subscriber.basic_layouts ) + this.$basicLayoutTotal.toDollars ( totals.basic_layout_total ) - var pro_layout_price = is_monthly ? plan.pro_layout_monthly_price : plan.pro_layout_yearly_price - var pro_layout_total = is_pro ? subscriber.pro_layouts * pro_layout_price : 0 - this.$proLayoutCost.toDollars( pro_layout_price ) - this.$proLayoutQuantity.html( subscriber.pro_layouts ) - this.$proLayoutTotal.toDollars( pro_layout_total ) + this.$proLayoutCost.toDollars ( totals.pro_layout_price ) + this.$proLayoutQuantity.html ( subscriber.pro_layouts ) + this.$proLayoutTotal.toDollars ( totals.pro_layout_total ) - var plan_total = plan_price + basic_layout_total + pro_layout_total - this.$planTotal.toDollars( plan_total ) + this.$planTotal.toDollars ( totals.plan_total ) }, - upgradeSubscription: function(){ + update: function(){ + $.ajax({ + url: this.updateAction, + type: "put", + data: { _csrf: this.$csrf.val() }, + success: function(data){ + window.location.href = "/profile" + } + }) }, - cancelSubscription: function(){ + destroy: function(){ + var msg = "Are you sure you want to cancel your subscription " + sanitize(this.$name.val()) + "?" + ConfirmModal.confirm(msg, function(){ + $.ajax({ + url: this.destroyAction, + type: "delete", + data: { _csrf: this.$csrf.val() }, + success: function(data){ + window.location.href = "/profile" + } + }) + }.bind(this)) }, }) |
