ReferalAllocator.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /* eslint-disable
  2. camelcase,
  3. max-len,
  4. no-unused-vars,
  5. */
  6. // TODO: This file was created by bulk-decaffeinate.
  7. // Fix any style issues and re-enable lint.
  8. /*
  9. * decaffeinate suggestions:
  10. * DS102: Remove unnecessary code created because of implicit returns
  11. * DS207: Consider shorter variations of null checks
  12. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  13. */
  14. let ReferalAllocator
  15. const _ = require('underscore')
  16. const logger = require('logger-sharelatex')
  17. const { User } = require('../../models/User')
  18. const Settings = require('settings-sharelatex')
  19. const FeaturesUpdater = require('../Subscription/FeaturesUpdater')
  20. module.exports = ReferalAllocator = {
  21. allocate(referal_id, new_user_id, referal_source, referal_medium, callback) {
  22. if (callback == null) {
  23. callback = function() {}
  24. }
  25. if (referal_id == null) {
  26. return callback(null)
  27. }
  28. const query = { referal_id: referal_id }
  29. return User.findOne(query, function(error, user) {
  30. if (error != null) {
  31. return callback(error)
  32. }
  33. if (user == null || user._id == null) {
  34. return callback(null)
  35. }
  36. if (referal_source === 'bonus') {
  37. return User.update(
  38. query,
  39. {
  40. $push: {
  41. refered_users: new_user_id
  42. },
  43. $inc: {
  44. refered_user_count: 1
  45. }
  46. },
  47. {},
  48. function(err) {
  49. if (err != null) {
  50. logger.warn(
  51. { err, referal_id, new_user_id },
  52. 'something went wrong allocating referal'
  53. )
  54. return callback(err)
  55. }
  56. return FeaturesUpdater.refreshFeatures(user._id, callback)
  57. }
  58. )
  59. } else {
  60. return callback()
  61. }
  62. })
  63. }
  64. }