summaryrefslogtreecommitdiff
path: root/server/lib/api/subscription.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/api/subscription.js')
-rw-r--r--server/lib/api/subscription.js32
1 files changed, 26 insertions, 6 deletions
diff --git a/server/lib/api/subscription.js b/server/lib/api/subscription.js
index 362d633..7e9221a 100644
--- a/server/lib/api/subscription.js
+++ b/server/lib/api/subscription.js
@@ -137,13 +137,20 @@ var subscription = module.exports = {
return res.json({ error: "bad input" })
}
var subscriber = req.subscription
+ var user = req.user
var plan_type = req.body.plan_type
- var basic_layouts = Math.max(0, parseInt(req.body.basic_layouts, 10))
- var pro_layouts = Math.max(0, parseInt(req.body.pro_layouts, 10))
+ var basic_layouts = Math.max(0, parseInt(req.body.basic_layouts || 0, 10))
+ var pro_layouts = Math.max(0, parseInt(req.body.pro_layouts || 0, 10))
+
+ if (plan_type == subscription.plan_type
+ && basic_layouts == subscriber.basic_layouts
+ && pro_layouts == subscriber.pro_layouts) {
+ return res.json(subscriber)
+ }
var data = {}
- data.plan_code = plan_type + "_monthly"
+ data.plan_code = plan_type + "-monthly"
data.subscription_add_ons = []
if (plan_levels[plan_type] > 0) {
@@ -158,8 +165,21 @@ var subscription = module.exports = {
// data.subscription_add_ons = []
// add_on.add_on_code
// add_on.quantity
- recurly.subscriptions.update(subscriber.uuid, data, function(){
- return res.json(subscriber)
+ recurly.subscriptions.update(subscriber.uuid, data, function(err, data){
+ if (err) {
+ console.log("error updating recurly subscription", err)
+ return res.json({ error: err })
+ }
+ subscriber.plan_type = plan_type
+ subscriber.basic_layouts = basic_layouts
+ subscriber.pro_layouts = pro_layouts
+ subscriber.save(function(){
+ user.plan_level = plan_levels[plan_type]
+ user.plan_type = plan_type
+ user.save(function(){
+ return res.json(subscriber)
+ })
+ })
})
},
@@ -169,7 +189,7 @@ var subscription = module.exports = {
}
var subscriber = req.subscription
- recurly.subscriptions.terminate(subscriber.uuid, "partial", function(){
+ recurly.subscriptions.terminate(subscriber.uuid, "partial", function(err, data){
subscriber.remove(function(){
req.user.plan_code = 0
req.user.plan_type = "free"