Skip to content

Commit

Permalink
Subscription cancellations admin page
Browse files Browse the repository at this point in the history
  • Loading branch information
differentmatt committed Jan 11, 2018
1 parent 0b36fc8 commit 029deed
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 0 deletions.
1 change: 1 addition & 0 deletions app/core/Router.coffee
Expand Up @@ -53,6 +53,7 @@ module.exports = class CocoRouter extends Backbone.Router
'admin/level-sessions': go('admin/LevelSessionsView')
'admin/school-counts': go('admin/SchoolCountsView')
'admin/school-licenses': go('admin/SchoolLicensesView')
'admin/sub-cancellations': go('admin/AdminSubCancellationsView')
'admin/base': go('admin/BaseView')
'admin/demo-requests': go('admin/DemoRequestsView')
'admin/trial-requests': go('admin/TrialRequestsView')
Expand Down
1 change: 1 addition & 0 deletions app/lib/dynamicRequire.coffee
Expand Up @@ -20,6 +20,7 @@ dynamicRequire = (path) ->
when 'views/admin/AnalyticsView' then require.ensure(['views/admin/AnalyticsView'], ((require) -> accept(require('views/admin/AnalyticsView'))), reject, 'admin')
when 'views/admin/AnalyticsSubscriptionsView' then require.ensure(['views/admin/AnalyticsSubscriptionsView'], ((require) -> accept(require('views/admin/AnalyticsSubscriptionsView'))), reject, 'admin')
when 'views/admin/AdminLevelHintsView' then require.ensure(['views/admin/AdminLevelHintsView'], ((require) -> accept(require('views/admin/AdminLevelHintsView'))), reject, 'admin')
when 'views/admin/AdminSubCancellationsView' then require.ensure(['views/admin/AdminSubCancellationsView'], ((require) -> accept(require('views/admin/AdminSubCancellationsView'))), reject, 'admin')
# when 'views/admin/LevelSessionsView' then require.ensure(['views/admin/LevelSessionsView'], ((require) -> accept(require('views/admin/LevelSessionsView'))), reject, 'admin')
when 'views/admin/SchoolCountsView' then require.ensure(['views/admin/SchoolCountsView'], ((require) -> accept(require('views/admin/SchoolCountsView'))), reject, 'admin')
when 'views/admin/SchoolLicensesView' then require.ensure(['views/admin/SchoolLicensesView'], ((require) -> accept(require('views/admin/SchoolLicensesView'))), reject, 'admin')
Expand Down
2 changes: 2 additions & 0 deletions app/templates/admin.jade
Expand Up @@ -74,6 +74,8 @@ block content
a(href="/admin/school-counts") School Counts
li
a(href="/admin/analytics/subscriptions") Subscriptions
li
a(href="/admin/sub-cancellations") Subscription Cancellations
li
a(href="/admin/demo-requests") Teacher Demo Requests
p
Expand Down
26 changes: 26 additions & 0 deletions app/templates/admin/admin-sub-cancellations.jade
@@ -0,0 +1,26 @@
extends /templates/base

//- DO NOT TRANSLATE
block content

if me.isAdmin()
h1 Subscription Cancellations
.small Returning #{view.limit} max latest cancellations, set 'limit' query variable to change.
br
if view.cancelEvents
table.table-striped.table-condensed
tr
td Date
td User Id
td Message
each event in view.cancelEvents
tr
td #{view.objectIdToDate(event._id).toISOString()}
td #{event.user}
if event.properties
td #{event.properties.message}
else
td
else
h3 Loading..
17 changes: 17 additions & 0 deletions app/views/admin/AdminSubCancellationsView.coffee
@@ -0,0 +1,17 @@
RootView = require 'views/core/RootView'
CocoCollection = require 'collections/CocoCollection'
utils = require 'core/utils'

module.exports = class AdminSubCancellationsView extends RootView
id: 'admin-sub-cancellations-view'
template: require 'templates/admin/admin-sub-cancellations'

initialize: ->
return super() unless me.isAdmin()
@objectIdToDate = utils.objectIdToDate
@limit = utils.getQueryVariable('limit', 100)
url = '/db/analytics.log.event?filter[event]="Unsubscribe End"&conditions[sort]="-_id"&conditions[limit]=' + @limit
Promise.resolve($.get(url))
.then (@cancelEvents) =>
@render?()
super()
2 changes: 2 additions & 0 deletions server/routes/index.coffee
Expand Up @@ -66,6 +66,8 @@ module.exports.setup = (app) ->
app.post('/db/achievement/:handle/watchers', mw.patchable.joinWatchers(Achievement))
app.delete('/db/achievement/:handle/watchers', mw.patchable.leaveWatchers(Achievement))

AnalyticsLogEvent = require '../models/AnalyticsLogEvent'
app.get('/db/analytics.log.event', mw.auth.checkHasPermission(['admin']), mw.rest.get(AnalyticsLogEvent))
app.post('/db/analytics.log.event/-/log_event', mw.auth.checkHasUser(), mw.analyticsLogEvents.post)

app.post('/db/analytics_perday/-/active_classes', mw.auth.checkHasPermission(['admin']), mw.analyticsPerDay.getActiveClasses)
Expand Down

0 comments on commit 029deed

Please sign in to comment.