SubscriptionGroupHandler.coffee 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. userViewModel = buildUserViewModel(user)
  26. users.push(userViewModel)
  27. cb()
  28. async.series jobs, (err)->
  29. callback(err, users)
  30. buildUserViewModel = (user)->
  31. u =
  32. email: user.email
  33. first_name: user.first_name
  34. last_name: user.last_name
  35. holdingAccount: user.holdingAccount
  36. _id: user._id
  37. return u