SubscriptionHandler.coffee 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. RecurlyWrapper = require("./RecurlyWrapper")
  2. Settings = require "settings-sharelatex"
  3. User = require('../../models/User').User
  4. logger = require('logger-sharelatex')
  5. SubscriptionUpdater = require("./SubscriptionUpdater")
  6. LimitationsManager = require('./LimitationsManager')
  7. EmailHandler = require("../Email/EmailHandler")
  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. callback()
  16. updateSubscription: (user, plan_code, callback)->
  17. logger.log user:user, plan_code:plan_code, "updating subscription"
  18. LimitationsManager.userHasSubscription user, (err, hasSubscription, subscription)->
  19. if hasSubscription
  20. RecurlyWrapper.updateSubscription subscription.recurlySubscription_id, {plan_code: plan_code, timeframe: "now"}, (error, recurlySubscription) ->
  21. return callback(error) if error?
  22. SubscriptionUpdater.syncSubscription recurlySubscription, user._id, callback
  23. else
  24. callback()
  25. cancelSubscription: (user, callback) ->
  26. LimitationsManager.userHasSubscription user, (err, hasSubscription, subscription)->
  27. if hasSubscription
  28. RecurlyWrapper.cancelSubscription subscription.recurlySubscription_id, (error) ->
  29. return callback(error) if error?
  30. emailOpts =
  31. to: user.email
  32. first_name: user.first_name
  33. EmailHandler.sendEmail "canceledSubscription", emailOpts
  34. callback()
  35. else
  36. callback()
  37. reactivateSubscription: (user, callback) ->
  38. LimitationsManager.userHasSubscription user, (err, hasSubscription, subscription)->
  39. if hasSubscription
  40. RecurlyWrapper.reactivateSubscription subscription.recurlySubscription_id, (error) ->
  41. return callback(error) if error?
  42. callback()
  43. else
  44. callback()
  45. recurlyCallback: (recurlySubscription, callback) ->
  46. RecurlyWrapper.getSubscription recurlySubscription.uuid, includeAccount: true, (error, recurlySubscription) ->
  47. return callback(error) if error?
  48. User.findById recurlySubscription.account.account_code, (error, user) ->
  49. return callback(error) if error?
  50. SubscriptionUpdater.syncSubscription recurlySubscription, user._id, callback