summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-01-31 10:10:27 -0500
committerJules Laplace <jules@okfoc.us>2015-01-31 10:10:27 -0500
commit6113063fa350114af8f39b87e96cc2c321bc2629 (patch)
tree133e396adf6d95eecac0d49182f0db2226b44ad7
parent8a2125b84b04335920b91eed03ecdb38a9f9e3c0 (diff)
handle syncing when an account has been cancelled and recreated
-rw-r--r--server/lib/api/subscription.js109
-rw-r--r--views/partials/edit-subscription.ejs2
2 files changed, 59 insertions, 52 deletions
diff --git a/server/lib/api/subscription.js b/server/lib/api/subscription.js
index a3baf34..b8853e6 100644
--- a/server/lib/api/subscription.js
+++ b/server/lib/api/subscription.js
@@ -47,65 +47,72 @@ var subscription = module.exports = {
res.json({ error: "no account" })
return
}
- if (! data.subscriptions.subscription) {
- res.json({ error: "account error" })
- return
- }
- if (subscriber.state != "active") {
- user.plan_type = "free"
- user.plan_level = plan_levels["free"]
+ var subscriptions = data.subscriptions.subscription.length ? data.subscriptions.subscription : [data.subscriptions.subscription]
+ var is_active = subscriptions.some(function(subscription_data){
+ if (subscription_data.state == "active") {
+ set_active(subscription_data)
+ return true
+ }
+ return false
+ })
+ console.log(data.subscriptions)
+ if (! is_active) {
+ set_cancelled()
+ }
+ })
+ function set_cancelled(){
+ user.plan_type = "free"
+ user.plan_level = plan_levels["free"]
- return subscriber.remove(function(){
- user.save(function(){
- res.json({ error: "account cancelled" })
- })
+ return subscriber.remove(function(){
+ user.save(function(){
+ res.json({ error: "account cancelled" })
})
- }
- else {
- var plan = data.subscriptions.subscription.plan.plan_code.split("-")
- var plan_type = plan[0]
- var plan_period = plan[1]
-
- user.plan_type = plan_type
- user.plan_level = plan_levels[plan_type]
+ })
+ }
+ function set_active(data){
+ var plan = data.plan.plan_code.split("-")
+ var plan_type = plan[0]
+ var plan_period = plan[1]
+
+ user.plan_type = plan_type
+ user.plan_level = plan_levels[plan_type]
- subscriber.uuid = data.subscriptions.subscription.uuid
- subscriber.user_id = user._id
- subscriber.plan_type = plan_type
- subscriber.plan_period = plan_period
- subscriber.plan_level = plan_levels[plan_type]
-
- var add_ons = data.subscriptions.subscription.subscription_add_ons.subscription_add_on
- if (add_ons) {
- if (add_ons.add_on_code) {
- add_ons = [ add_ons ]
- }
- // TODO: handle multiple add-ons.. presumably this will work
- add_ons.forEach(function(add_on){
- var add_on_type = add_on.add_on_code.split("-")[1]
- if (add_on_type == "basic") {
- subscriber.basic_layouts = parseInt( add_on.quantity._ )
- }
- if (add_on_type == "pro") {
- subscriber.pro_layouts = parseInt( add_on.quantity._ )
- }
- })
- }
- else {
- subscriber.basic_layouts = 0
- subscriber.pro_layouts = 0
+ subscriber.uuid = data.uuid
+ subscriber.user_id = user._id
+ subscriber.plan_type = plan_type
+ subscriber.plan_period = plan_period
+ subscriber.plan_level = plan_levels[plan_type]
+
+ var add_ons = data.subscription_add_ons.subscription_add_on
+ if (add_ons) {
+ if (add_ons.add_on_code) {
+ add_ons = [ add_ons ]
}
+ // TODO: handle multiple add-ons.. presumably this will work
+ add_ons.forEach(function(add_on){
+ var add_on_type = add_on.add_on_code.split("-")[1]
+ if (add_on_type == "basic") {
+ subscriber.basic_layouts = parseInt( add_on.quantity._ )
+ }
+ if (add_on_type == "pro") {
+ subscriber.pro_layouts = parseInt( add_on.quantity._ )
+ }
+ })
+ }
+ else {
+ subscriber.basic_layouts = 0
+ subscriber.pro_layouts = 0
}
-
- subscriber.save(function(){
- user.save(function(){
- res.json({
+ subscriber.save(function(){
+ user.save(function(){
+ res.json({
subscription: subscriber,
plans: res.locals.plans
})
- })
- })
- })
+ })
+ })
+ }
},
show: function(req, res){
diff --git a/views/partials/edit-subscription.ejs b/views/partials/edit-subscription.ejs
index 8599fb5..69ec88d 100644
--- a/views/partials/edit-subscription.ejs
+++ b/views/partials/edit-subscription.ejs
@@ -42,7 +42,7 @@
<td>$<span data-role="planTotal"></span>/<span data-role="billingInterval"></span></td>
</tr>
</table>
- <button data-role="addLayouts">Add more layouts</button>
+ <button data-role="addLayouts">Buy more layouts</button>
<button data-role="changePlan">Upgrade your plan</button>
<button data-role="cancelSubscription">Cancel your subscription</button>
</li>