ProjectCollabratecDetailsHandler.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /* eslint-disable
  2. n/handle-callback-err,
  3. max-len,
  4. */
  5. // TODO: This file was created by bulk-decaffeinate.
  6. // Fix any style issues and re-enable lint.
  7. /*
  8. * decaffeinate suggestions:
  9. * DS101: Remove unnecessary use of Array.from
  10. * DS207: Consider shorter variations of null checks
  11. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  12. */
  13. let ProjectCollabratecDetailsHandler
  14. const { ObjectId } = require('mongodb')
  15. const { Project } = require('../../models/Project')
  16. module.exports = ProjectCollabratecDetailsHandler = {
  17. initializeCollabratecProject(
  18. projectId,
  19. userId,
  20. collabratecDocumentId,
  21. collabratecPrivategroupId,
  22. callback
  23. ) {
  24. if (callback == null) {
  25. callback = function () {}
  26. }
  27. ProjectCollabratecDetailsHandler.setCollabratecUsers(
  28. projectId,
  29. [
  30. {
  31. user_id: userId,
  32. collabratec_document_id: collabratecDocumentId,
  33. collabratec_privategroup_id: collabratecPrivategroupId,
  34. },
  35. ],
  36. callback
  37. )
  38. },
  39. isLinkedCollabratecUserProject(projectId, userId, callback) {
  40. if (callback == null) {
  41. callback = function () {}
  42. }
  43. try {
  44. projectId = new ObjectId(projectId)
  45. userId = new ObjectId(userId)
  46. } catch (error) {
  47. const err = error
  48. return callback(err)
  49. }
  50. const query = {
  51. _id: projectId,
  52. collabratecUsers: {
  53. $elemMatch: {
  54. user_id: userId,
  55. },
  56. },
  57. }
  58. Project.findOne(query, { _id: 1 }, function (err, project) {
  59. if (err != null) {
  60. callback(err)
  61. }
  62. callback(null, project != null)
  63. })
  64. },
  65. linkCollabratecUserProject(
  66. projectId,
  67. userId,
  68. collabratecDocumentId,
  69. callback
  70. ) {
  71. if (callback == null) {
  72. callback = function () {}
  73. }
  74. try {
  75. projectId = new ObjectId(projectId)
  76. userId = new ObjectId(userId)
  77. } catch (error) {
  78. const err = error
  79. return callback(err)
  80. }
  81. const query = {
  82. _id: projectId,
  83. collabratecUsers: {
  84. $not: {
  85. $elemMatch: {
  86. collabratec_document_id: collabratecDocumentId,
  87. user_id: userId,
  88. },
  89. },
  90. },
  91. }
  92. const update = {
  93. $push: {
  94. collabratecUsers: {
  95. collabratec_document_id: collabratecDocumentId,
  96. user_id: userId,
  97. },
  98. },
  99. }
  100. Project.updateOne(query, update, callback)
  101. },
  102. setCollabratecUsers(projectId, collabratecUsers, callback) {
  103. let err
  104. if (callback == null) {
  105. callback = function () {}
  106. }
  107. try {
  108. projectId = new ObjectId(projectId)
  109. } catch (error) {
  110. err = error
  111. return callback(err)
  112. }
  113. if (!Array.isArray(collabratecUsers)) {
  114. callback(new Error('collabratec_users must be array'))
  115. }
  116. for (const collabratecUser of Array.from(collabratecUsers)) {
  117. try {
  118. collabratecUser.user_id = new ObjectId(collabratecUser.user_id)
  119. } catch (error1) {
  120. err = error1
  121. return callback(err)
  122. }
  123. }
  124. const update = { $set: { collabratecUsers } }
  125. Project.updateOne({ _id: projectId }, update, callback)
  126. },
  127. unlinkCollabratecUserProject(projectId, userId, callback) {
  128. if (callback == null) {
  129. callback = function () {}
  130. }
  131. try {
  132. projectId = new ObjectId(projectId)
  133. userId = new ObjectId(userId)
  134. } catch (error) {
  135. const err = error
  136. return callback(err)
  137. }
  138. const query = { _id: projectId }
  139. const update = {
  140. $pull: {
  141. collabratecUsers: {
  142. user_id: userId,
  143. },
  144. },
  145. }
  146. Project.updateOne(query, update, callback)
  147. },
  148. updateCollabratecUserIds(oldUserId, newUserId, callback) {
  149. if (callback == null) {
  150. callback = function () {}
  151. }
  152. try {
  153. oldUserId = new ObjectId(oldUserId)
  154. newUserId = new ObjectId(newUserId)
  155. } catch (error) {
  156. const err = error
  157. return callback(err)
  158. }
  159. const query = { 'collabratecUsers.user_id': oldUserId }
  160. const update = { $set: { 'collabratecUsers.$.user_id': newUserId } }
  161. Project.updateMany(query, update, callback)
  162. },
  163. }