ReferalFeatures.coffee 1.2 KB

123456789101112131415161718192021222324252627282930
  1. _ = require("underscore")
  2. logger = require('logger-sharelatex')
  3. User = require('../../models/User').User
  4. Settings = require "settings-sharelatex"
  5. module.exports = ReferalFeatures =
  6. getBonusFeatures: (user_id, callback = (error) ->) ->
  7. query = _id: user_id
  8. User.findOne query, (error, user) ->
  9. return callback(error) if error
  10. return callback(new Error("user not found #{user_id} for assignBonus")) if !user?
  11. logger.log user_id: user_id, refered_user_count: user.refered_user_count, "assigning bonus"
  12. if user.refered_user_count? and user.refered_user_count > 0
  13. newFeatures = ReferalFeatures._calculateFeatures(user)
  14. callback null, newFeatures
  15. else
  16. callback null, {}
  17. _calculateFeatures : (user)->
  18. bonusLevel = ReferalFeatures._getBonusLevel(user)
  19. return Settings.bonus_features?["#{bonusLevel}"] or {}
  20. _getBonusLevel: (user)->
  21. highestBonusLevel = 0
  22. _.each _.keys(Settings.bonus_features), (level)->
  23. levelIsLessThanUser = level <= user.refered_user_count
  24. levelIsMoreThanCurrentHighest = level >= highestBonusLevel
  25. if levelIsLessThanUser and levelIsMoreThanCurrentHighest
  26. highestBonusLevel = level
  27. return highestBonusLevel