SubscriptionHandler.coffee 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. RecurlyWrapper = require("./RecurlyWrapper")
  2. Settings = require "settings-sharelatex"
  3. User = require('../../models/User').User
  4. logger = require('logger-sharelatex')
  5. AnalyticsManager = require '../../Features/Analytics/AnalyticsManager'
  6. SubscriptionUpdater = require("./SubscriptionUpdater")
  7. LimitationsManager = require('./LimitationsManager')
  8. module.exports =
  9. createSubscription: (user, recurlySubscriptionId, callback)->
  10. self = @
  11. RecurlyWrapper.getSubscription recurlySubscriptionId, {recurlyJsResult: true}, (error, recurlySubscription) ->
  12. return callback(error) if error?
  13. SubscriptionUpdater.syncSubscription recurlySubscription, user._id, (error) ->
  14. return callback(error) if error?
  15. AnalyticsManager.trackSubscriptionStarted user, recurlySubscription?.plan?.plan_code
  16. callback()
  17. updateSubscription: (user, plan_code, callback)->
  18. logger.log user:user, plan_code:plan_code, "updating subscription"
  19. LimitationsManager.userHasSubscription user, (err, hasSubscription, subscription)->
  20. if hasSubscription
  21. RecurlyWrapper.updateSubscription subscription.recurlySubscription_id, {plan_code: plan_code, timeframe: "now"}, (error, recurlySubscription) ->
  22. return callback(error) if error?
  23. SubscriptionUpdater.syncSubscription recurlySubscription, user._id, callback
  24. else
  25. callback()
  26. cancelSubscription: (user, callback) ->
  27. LimitationsManager.userHasSubscription user, (err, hasSubscription, subscription)->
  28. if hasSubscription
  29. RecurlyWrapper.cancelSubscription subscription.recurlySubscription_id, (error) ->
  30. return callback(error) if error?
  31. AnalyticsManager.trackSubscriptionCancelled user
  32. callback()
  33. else
  34. callback()
  35. reactivateSubscription: (user, callback) ->
  36. LimitationsManager.userHasSubscription user, (err, hasSubscription, subscription)->
  37. if hasSubscription
  38. RecurlyWrapper.reactivateSubscription subscription.recurlySubscription_id, (error) ->
  39. return callback(error) if error?
  40. callback()
  41. else
  42. callback()
  43. recurlyCallback: (recurlySubscription, callback) ->
  44. RecurlyWrapper.getSubscription recurlySubscription.uuid, includeAccount: true, (error, recurlySubscription) ->
  45. return callback(error) if error?
  46. User.findById recurlySubscription.account.account_code, (error, user) ->
  47. return callback(error) if error?
  48. SubscriptionUpdater.syncSubscription recurlySubscription, user._id, callback