SubscriptionGroupHandler.coffee 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. async = require("async")
  2. _ = require("underscore")
  3. UserCreator = require("../User/UserCreator")
  4. SubscriptionUpdater = require("./SubscriptionUpdater")
  5. SubscriptionLocator = require("./SubscriptionLocator")
  6. UserLocator = require("../User/UserLocator")
  7. LimitationsManager = require("./LimitationsManager")
  8. module.exports =
  9. addUserToGroup: (adminUser_id, newEmail, callback)->
  10. UserCreator.getUserOrCreateHoldingAccount newEmail, (err, user)->
  11. LimitationsManager.hasGroupMembersLimitReached adminUser_id, (err, limitReached)->
  12. if limitReached
  13. return callback(limitReached:limitReached)
  14. SubscriptionUpdater.addUserToGroup adminUser_id, user._id, (err)->
  15. userViewModel = buildUserViewModel(user)
  16. callback(err, userViewModel)
  17. removeUserFromGroup: (adminUser_id, userToRemove_id, callback)->
  18. SubscriptionUpdater.removeUserFromGroup adminUser_id, userToRemove_id, callback
  19. getPopulatedListOfMembers: (adminUser_id, callback)->
  20. SubscriptionLocator.getUsersSubscription adminUser_id, (err, subscription)->
  21. users = []
  22. jobs = _.map subscription.member_ids, (user_id)->
  23. return (cb)->
  24. UserLocator.findById user_id, (err, user)->
  25. if err? or !user?
  26. users.push _id:user_id
  27. return cb()
  28. userViewModel = buildUserViewModel(user)
  29. users.push(userViewModel)
  30. cb()
  31. async.series jobs, (err)->
  32. callback(err, users)
  33. buildUserViewModel = (user)->
  34. u =
  35. email: user.email
  36. first_name: user.first_name
  37. last_name: user.last_name
  38. holdingAccount: user.holdingAccount
  39. _id: user._id
  40. return u