| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- ObjectId = require('mongojs').ObjectId
- UserGetter = require('../User/UserGetter')
- module.exports = UserMembershipViewModel =
- build: (userOrEmail) ->
- if userOrEmail._id
- buildUserViewModel userOrEmail
- else
- buildUserViewModelWithEmail userOrEmail
- buildAsync: (userOrIdOrEmail, callback = (error, viewModel)->) ->
- unless userOrIdOrEmail instanceof ObjectId
- # userOrIdOrEmail is a user or an email and can be parsed by #build
- return callback(null, UserMembershipViewModel.build(userOrIdOrEmail))
- userId = userOrIdOrEmail
- projection = { email: 1, first_name: 1, last_name: 1 }
- UserGetter.getUserOrUserStubById userId, projection, (error, user, isStub) ->
- if error? or !user?
- return callback(null, buildUserViewModelWithId(userId.toString()))
- if isStub
- return callback(null, buildUserViewModelWithStub(user))
- callback(null, buildUserViewModel(user))
- buildUserViewModel = (user, isInvite = false) ->
- _id: user._id or null
- email: user.email or null
- first_name: user.first_name or null
- last_name: user.last_name or null
- invite: isInvite
- buildUserViewModelWithEmail = (email) ->
- buildUserViewModel({ email }, true)
- buildUserViewModelWithStub = (user) ->
- # user stubs behave as invites
- buildUserViewModel(user, true)
- buildUserViewModelWithId = (id) ->
- buildUserViewModel({ _id: id }, false)
|