SubscriptionHandler.coffee 2.5 KB

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