summaryrefslogtreecommitdiff
path: root/server/lib/api
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-01-31 09:16:27 -0500
committerJules Laplace <jules@okfoc.us>2015-01-31 09:16:27 -0500
commitaf230e59ec431c9b617b0caf94dc7c37bb5e81af (patch)
treebc67c5aec42091fa8b469d4f4009e2c7381973f4 /server/lib/api
parentd08c86d68ceb22665b735054fc3bc316f85f84c1 (diff)
handle cancelled subscription
Diffstat (limited to 'server/lib/api')
-rw-r--r--server/lib/api/subscription.js78
1 files changed, 46 insertions, 32 deletions
diff --git a/server/lib/api/subscription.js b/server/lib/api/subscription.js
index 0801204..285ce8b 100644
--- a/server/lib/api/subscription.js
+++ b/server/lib/api/subscription.js
@@ -51,40 +51,51 @@ var subscription = module.exports = {
res.json({ error: "account error" })
return
}
+ if (subscriber.state != "active") {
+ user.plan_type = "free"
+ user.plan_level = plan_levels["free"]
- 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]
+ 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]
- 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.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.save(function(){
user.save(function(){
@@ -156,6 +167,9 @@ var subscription = module.exports = {
subscriber.remove(function(){
req.user.plan_code = 0
req.user.plan_type = "free"
+ req.user.save(function(){
+ res.json({ status: "OK" })
+ })
})
})
},