From afce400c65f362f7dd6307a5670dc3873d74ab79 Mon Sep 17 00:00:00 2001 From: Julie Lala Date: Sun, 11 Jan 2015 21:42:45 -0500 Subject: stub in subscriptions admin pages --- server/lib/views/staff.js | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'server/lib/views/staff.js') diff --git a/server/lib/views/staff.js b/server/lib/views/staff.js index 97ecde6..4351ef0 100644 --- a/server/lib/views/staff.js +++ b/server/lib/views/staff.js @@ -500,6 +500,27 @@ var staff = module.exports = { staff.plans.update ); + + // + // subscriptions + app.get('/staff/subscriptions', + middleware.ensureAuthenticated, + middleware.ensureIsStaff, + + staff.middleware.ensureSubscriptions, + staff.middleware.ensureSubscriptionsUsers, + + staff.subscriptions.index + ); + app.get('/staff/subscriptions/:id', + middleware.ensureAuthenticated, + middleware.ensureIsStaff, + + staff.middleware.ensureSubscription, + staff.middleware.ensureSubscriptionUser, + + staff.subscriptions.edit + ); }, paginate: function(req, res){ @@ -669,6 +690,17 @@ var staff = module.exports = { res.redirect("/staff/plans/") }) }, - } + }, + + subscriptions: { + index: function(req, res){ + res.locals.subscriptions = req.subscriptions + res.render('staff/plans/index') + }, + show: function(req, res){ + res.locals.subscription = req.subscription + res.render('staff/plans/show') + }, + }, } -- cgit v1.2.3-70-g09d2 From a1c9bdecff30d72eeaef54c66c7211966a97d4e4 Mon Sep 17 00:00:00 2001 From: Julie Lala Date: Sun, 11 Jan 2015 21:57:17 -0500 Subject: crud --- server/lib/views/staff.js | 69 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 3 deletions(-) (limited to 'server/lib/views/staff.js') diff --git a/server/lib/views/staff.js b/server/lib/views/staff.js index 4351ef0..39a8dca 100644 --- a/server/lib/views/staff.js +++ b/server/lib/views/staff.js @@ -124,7 +124,35 @@ var staff = module.exports = { next() }) }, - + + ensureSubscriptions: function(req, res, next){ + var paginationInfo = res.locals.pagination = {} + var criteria = req.criteria || {} + var limit = paginationInfo.limit = Math.min( Number(req.query.limit) || 50, 200 ) + var offset = paginationInfo.offset = Number(req.query.offset) || 0 + var sort + paginationInfo.sort = req.query.sort + paginationInfo.sortOptions = ["date", "name"] + switch (req.query.sort) { + case 'created': + sort = {'created_at': -1} + break + default: + case 'date': + sort = {'updated_at': -1} + break + } + Subscription.find(criteria) + .select(staff.fields.project) + .sort(sort) + .skip(offset) + .limit(limit) + .exec(function (err, subscriptions) { + res.locals.subscriptions = subscriptions.map(staff.helpers.subscription) + next() + }) + }, + ensurePlans: function(req, res, next){ Plan.find(function (err, plans) { res.locals.plans = (plans || []).map(staff.helpers.plan) @@ -150,6 +178,24 @@ var staff = module.exports = { } }, + ensureSubscription: function (req, res, next) { + if (req.params.id) { + Subscription.findOne({ _id: req.params.id }, function(err, subscription){ + if (err || ! subscription) { + console.error(err) + res.redirect("/staff/subscriptions/") + } + else { + req.subscription = subscription + next() + } + }) + } + else { + res.redirect("/staff/subscriptions/") + } + }, + ensureRecentProjects: function(req, res, next){ var dreq = { params: { sort: 'created_at', limit: 20, offset: 0 } } staff.middleware.ensureProjects(dreq, res, next) @@ -160,11 +206,23 @@ var staff = module.exports = { staff.middleware.ensureObjectsUsers(res.locals.projects, next) }, + ensureSubscriptionsUsers: function(req, res, next){ + if (! res.locals.subscriptions || ! res.locals.subscriptions.length) { return next() } + staff.middleware.ensureObjectsUsers(res.locals.subscriptions, next) + }, + ensureMediaUsers: function(req, res, next){ if (! res.locals.media || ! res.locals.media.length) { return next() } staff.middleware.ensureObjectsUsers(res.locals.media, next) }, + ensureSubscriptionUser: function(req, res, next){ + if (! res.locals.subscription) { return next() } + staff.middleware.ensureObjectsUsers([ res.locals.subscription ], function(){ + next() + }) + }, + ensureMediaUser: function(req, res, next){ if (! res.locals.media) { return next() } staff.middleware.ensureObjectsUsers([ res.locals.media ], function(){ @@ -338,6 +396,13 @@ var staff = module.exports = { plan.user = {} return plan }, + + subscription: function(subscription){ + subscription = subscription.toObject() + subscription.date = moment( subscription.updated_at || subscription.created_at ).format("M/DD/YYYY hh:mm a") + subscription.user = {} + return subscription + }, }, route: function(app){ @@ -694,11 +759,9 @@ var staff = module.exports = { subscriptions: { index: function(req, res){ - res.locals.subscriptions = req.subscriptions res.render('staff/plans/index') }, show: function(req, res){ - res.locals.subscription = req.subscription res.render('staff/plans/show') }, }, -- cgit v1.2.3-70-g09d2 From ffdee0615c775466053daff3ce4afd1d11c83e33 Mon Sep 17 00:00:00 2001 From: Julie Lala Date: Sun, 11 Jan 2015 22:37:07 -0500 Subject: pagination --- server/lib/views/staff.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'server/lib/views/staff.js') diff --git a/server/lib/views/staff.js b/server/lib/views/staff.js index 39a8dca..64cfe77 100644 --- a/server/lib/views/staff.js +++ b/server/lib/views/staff.js @@ -759,10 +759,13 @@ var staff = module.exports = { subscriptions: { index: function(req, res){ - res.render('staff/plans/index') + res.locals.pagination.count = res.locals.subscriptions.length + res.locals.pagination.max = res.locals.subscriptionCount + staff.paginate(req, res) + res.render('staff/subscriptions/index') }, show: function(req, res){ - res.render('staff/plans/show') + res.render('staff/subscriptions/show') }, }, -- cgit v1.2.3-70-g09d2 From 77c4c8d066611ad651af8df7290fb3e54d074081 Mon Sep 17 00:00:00 2001 From: Julie Lala Date: Sun, 11 Jan 2015 23:37:49 -0500 Subject: fix --- server/lib/views/staff.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'server/lib/views/staff.js') diff --git a/server/lib/views/staff.js b/server/lib/views/staff.js index 64cfe77..d4abf1f 100644 --- a/server/lib/views/staff.js +++ b/server/lib/views/staff.js @@ -584,7 +584,7 @@ var staff = module.exports = { staff.middleware.ensureSubscription, staff.middleware.ensureSubscriptionUser, - staff.subscriptions.edit + staff.subscriptions.show ); }, @@ -765,7 +765,7 @@ var staff = module.exports = { res.render('staff/subscriptions/index') }, show: function(req, res){ - res.render('staff/subscriptions/show') + res.render('staff/subscriptions /show') }, }, -- cgit v1.2.3-70-g09d2 From dcfbf734436fad76f5ca2e1cecadf4051118d56f Mon Sep 17 00:00:00 2001 From: Julie Lala Date: Mon, 12 Jan 2015 12:24:57 -0500 Subject: stubbing webhook --- server/index.js | 2 ++ server/lib/views/staff.js | 2 +- server/lib/views/subscription.js | 21 ++++++--------------- 3 files changed, 9 insertions(+), 16 deletions(-) (limited to 'server/lib/views/staff.js') diff --git a/server/index.js b/server/index.js index 9a9323c..a14eaab 100644 --- a/server/index.js +++ b/server/index.js @@ -70,6 +70,8 @@ site.setup = function(){ app.all('*', middleware.ensureLocals); app.all('*', middleware.ensureIP); + app.get('/subscribe/webhook', views.subscription.webhook); + server = http.createServer(app) server.listen(app.get('port'), function () { console.log('Express server listening on port ' + app.get('port')); diff --git a/server/lib/views/staff.js b/server/lib/views/staff.js index d4abf1f..74dd7cd 100644 --- a/server/lib/views/staff.js +++ b/server/lib/views/staff.js @@ -765,7 +765,7 @@ var staff = module.exports = { res.render('staff/subscriptions/index') }, show: function(req, res){ - res.render('staff/subscriptions /show') + res.render('staff/subscriptions/show') }, }, diff --git a/server/lib/views/subscription.js b/server/lib/views/subscription.js index ba54bb4..e29e40d 100644 --- a/server/lib/views/subscription.js +++ b/server/lib/views/subscription.js @@ -32,19 +32,10 @@ var subscription = module.exports = { return project }, }, - - route: function(app){ - app.get('/staff', - middleware.ensureAuthenticated, - middleware.ensureIsStaff, - - staff.middleware.ensureRecentUsers, - staff.middleware.ensureUsersCount, - staff.middleware.ensureProjectsCount, - staff.middleware.ensureMediaCount, - - staff.index - ); - }, - + + // need a route for the webhook, + // then calls to get appropriate info from the recurly api + webhook: function(req, res){ + res.status(200).end() + }, } -- cgit v1.2.3-70-g09d2