SubscriptionLocator.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. /* eslint-disable
  2. camelcase,
  3. node/handle-callback-err,
  4. max-len,
  5. no-unused-vars,
  6. */
  7. // TODO: This file was created by bulk-decaffeinate.
  8. // Fix any style issues and re-enable lint.
  9. /*
  10. * decaffeinate suggestions:
  11. * DS102: Remove unnecessary code created because of implicit returns
  12. * DS207: Consider shorter variations of null checks
  13. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  14. */
  15. const { promisify } = require('util')
  16. const { Subscription } = require('../../models/Subscription')
  17. const { DeletedSubscription } = require('../../models/DeletedSubscription')
  18. const logger = require('logger-sharelatex')
  19. require('./GroupPlansData') // make sure dynamic group plans are loaded
  20. const SubscriptionLocator = {
  21. getUsersSubscription(user_or_id, callback) {
  22. const user_id = SubscriptionLocator._getUserId(user_or_id)
  23. return Subscription.findOne({ admin_id: user_id }, function(
  24. err,
  25. subscription
  26. ) {
  27. logger.log({ user_id }, 'got users subscription')
  28. return callback(err, subscription)
  29. })
  30. },
  31. getUserIndividualSubscription(user_or_id, callback) {
  32. const user_id = SubscriptionLocator._getUserId(user_or_id)
  33. return Subscription.findOne(
  34. { admin_id: user_id, groupPlan: false },
  35. function(err, subscription) {
  36. logger.log({ user_id }, 'got users individual subscription')
  37. return callback(err, subscription)
  38. }
  39. )
  40. },
  41. getManagedGroupSubscriptions(user_or_id, callback) {
  42. if (callback == null) {
  43. callback = function(error, managedSubscriptions) {}
  44. }
  45. const user_id = SubscriptionLocator._getUserId(user_or_id)
  46. return Subscription.find({
  47. manager_ids: user_or_id,
  48. groupPlan: true
  49. })
  50. .populate('admin_id')
  51. .exec(callback)
  52. },
  53. getMemberSubscriptions(user_or_id, callback) {
  54. const user_id = SubscriptionLocator._getUserId(user_or_id)
  55. return Subscription.find({ member_ids: user_id })
  56. .populate('admin_id')
  57. .exec(callback)
  58. },
  59. getSubscription(subscription_id, callback) {
  60. return Subscription.findOne({ _id: subscription_id }, callback)
  61. },
  62. getSubscriptionByMemberIdAndId(user_id, subscription_id, callback) {
  63. return Subscription.findOne(
  64. { member_ids: user_id, _id: subscription_id },
  65. { _id: 1 },
  66. callback
  67. )
  68. },
  69. getGroupSubscriptionsMemberOf(user_id, callback) {
  70. return Subscription.find(
  71. { member_ids: user_id },
  72. { _id: 1, planCode: 1 },
  73. callback
  74. )
  75. },
  76. getGroupsWithEmailInvite(email, callback) {
  77. return Subscription.find({ invited_emails: email }, callback)
  78. },
  79. getGroupWithV1Id(v1TeamId, callback) {
  80. return Subscription.findOne({ 'overleaf.id': v1TeamId }, callback)
  81. },
  82. getUserDeletedSubscriptions(userId, callback) {
  83. DeletedSubscription.find({ 'subscription.admin_id': userId }, callback)
  84. },
  85. getDeletedSubscription(subscriptionId, callback) {
  86. DeletedSubscription.findOne(
  87. {
  88. 'subscription._id': subscriptionId
  89. },
  90. callback
  91. )
  92. },
  93. _getUserId(user_or_id) {
  94. if (user_or_id != null && user_or_id._id != null) {
  95. return user_or_id._id
  96. } else if (user_or_id != null) {
  97. return user_or_id
  98. }
  99. }
  100. }
  101. SubscriptionLocator.promises = {
  102. getUsersSubscription: promisify(SubscriptionLocator.getUsersSubscription),
  103. getUserIndividualSubscription: promisify(
  104. SubscriptionLocator.getUserIndividualSubscription
  105. ),
  106. getManagedGroupSubscriptions: promisify(
  107. SubscriptionLocator.getManagedGroupSubscriptions
  108. ),
  109. getMemberSubscriptions: promisify(SubscriptionLocator.getMemberSubscriptions),
  110. getSubscription: promisify(SubscriptionLocator.getSubscription),
  111. getSubscriptionByMemberIdAndId: promisify(
  112. SubscriptionLocator.getSubscriptionByMemberIdAndId
  113. ),
  114. getGroupSubscriptionsMemberOf: promisify(
  115. SubscriptionLocator.getGroupSubscriptionsMemberOf
  116. ),
  117. getGroupsWithEmailInvite: promisify(
  118. SubscriptionLocator.getGroupsWithEmailInvite
  119. ),
  120. getGroupWithV1Id: promisify(SubscriptionLocator.getGroupWithV1Id),
  121. getUserDeletedSubscriptions: promisify(
  122. SubscriptionLocator.getUserDeletedSubscriptions
  123. ),
  124. getDeletedSubscription: promisify(SubscriptionLocator.getDeletedSubscription)
  125. }
  126. module.exports = SubscriptionLocator