ProjectCollabratecDetailsHandler.coffee 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. ObjectId = require("mongojs").ObjectId
  2. Project = require("../../models/Project").Project
  3. module.exports = ProjectCollabratecDetailsHandler =
  4. initializeCollabratecProject: (project_id, user_id, collabratec_document_id, collabratec_privategroup_id, callback=(err)->) ->
  5. ProjectCollabratecDetailsHandler.setCollabratecUsers project_id, [ { user_id, collabratec_document_id, collabratec_privategroup_id } ], callback
  6. isLinkedCollabratecUserProject: (project_id, user_id, callback=(err, isLinked)->) ->
  7. try
  8. project_id = ObjectId project_id
  9. user_id = ObjectId user_id
  10. catch err
  11. return callback err
  12. query =
  13. _id: project_id
  14. collabratecUsers: $elemMatch:
  15. user_id: user_id
  16. Project.findOne query, {_id: 1}, (err, project) ->
  17. callback err if err?
  18. callback null, project?
  19. linkCollabratecUserProject: (project_id, user_id, collabratec_document_id, callback=(err)->) ->
  20. try
  21. project_id = ObjectId project_id
  22. user_id = ObjectId user_id
  23. catch err
  24. return callback err
  25. query =
  26. _id: project_id
  27. collabratecUsers: $not: $elemMatch:
  28. collabratec_document_id: collabratec_document_id
  29. user_id: user_id
  30. update = $push: collabratecUsers:
  31. collabratec_document_id: collabratec_document_id
  32. user_id: user_id
  33. Project.update query, update, callback
  34. setCollabratecUsers: (project_id, collabratec_users, callback=(err)->) ->
  35. try
  36. project_id = ObjectId project_id
  37. catch err
  38. return callback err
  39. callback(new Error "collabratec_users must be array") unless Array.isArray(collabratec_users)
  40. for collabratec_user in collabratec_users
  41. try
  42. collabratec_user.user_id = ObjectId(collabratec_user.user_id)
  43. catch err
  44. return callback err
  45. update = $set: { collabratecUsers: collabratec_users }
  46. Project.update { _id: project_id }, update, callback
  47. unlinkCollabratecUserProject: (project_id, user_id, callback=(err)->) ->
  48. try
  49. project_id = ObjectId project_id
  50. user_id = ObjectId user_id
  51. catch err
  52. return callback err
  53. query =
  54. _id: project_id
  55. update = $pull: collabratecUsers:
  56. user_id: user_id
  57. Project.update query, update, callback
  58. updateCollabratecUserIds: (old_user_id, new_user_id, callback=(err)->) ->
  59. try
  60. old_user_id = ObjectId old_user_id
  61. new_user_id = ObjectId new_user_id
  62. catch err
  63. return callback err
  64. query = "collabratecUsers.user_id": old_user_id
  65. update = $set: "collabratecUsers.$.user_id": new_user_id
  66. options = multi: true
  67. Project.update query, update, options, callback