| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- logger = require('logger-sharelatex')
- User = require('../../models/User').User
- AnalyticsManager = require("../Analytics/AnalyticsManager")
- SubscriptionLocator = require "../Subscription/SubscriptionLocator"
- Settings = require "settings-sharelatex"
- module.exports = ReferalAllocator =
- allocate: (referal_id, new_user_id, referal_source, referal_medium, callback = ->)->
- if !referal_id?
- return logger.log new_user_id:new_user_id, "no referal for user"
- logger.log referal_id:referal_id, new_user_id:new_user_id, "allocating users referal"
- query = {"referal_id":referal_id}
- User.findOne query, (error, user) ->
- return callback(error) if error?
- return callback(new Error("user not found")) if !user? or !user._id?
- # Can be backgrounded
- AnalyticsManager.trackReferral user, referal_source, referal_medium
-
- if referal_source == "bonus"
- User.update query, {
- $push:
- refered_users: new_user_id
- $inc:
- refered_user_count: 1
- }, {}, (err)->
- if err?
- logger.err err:err, referal_id:referal_id, new_user_id:new_user_id, "something went wrong allocating referal"
- return callback(err)
- ReferalAllocator.assignBonus user._id, callback
- else
- callback()
- assignBonus: (user_id, callback = (error) ->) ->
- SubscriptionLocator.getUsersSubscription user_id, (error, subscription) ->
- return callback(error) if error?
- logger.log
- subscription: subscription,
- user_id: user_id,
- "checking user doesn't have a subsciption before assigning bonus"
- if !subscription? or !subscription.planCode?
- query = _id: user_id
- User.findOne query, (error, user) ->
- return callback(error) if error
- return callback(new Error("user not found")) if !user?
- logger.log
- user_id: user_id,
- refered_user_count: user.refered_user_count,
- bonus_features: Settings.bonus_features[user.refered_user_count],
- "assigning bonus"
- if user.refered_user_count? and Settings.bonus_features[user.refered_user_count]?
- User.update query, { $set: features: Settings.bonus_features[user.refered_user_count] }, callback
- else
- callback()
- else
- callback()
-
-
|