SubscriptionLocator.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /* eslint-disable
  2. camelcase,
  3. 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 logger = require('logger-sharelatex')
  18. const { ObjectId } = require('mongoose').Types
  19. const SubscriptionLocator = {
  20. getUsersSubscription(user_or_id, callback) {
  21. const user_id = SubscriptionLocator._getUserId(user_or_id)
  22. logger.log({ user_id }, 'getting users subscription')
  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. findManagedSubscription(managerId, callback) {
  32. logger.log({ managerId }, 'finding managed subscription')
  33. return Subscription.findOne({ manager_ids: managerId }, callback)
  34. },
  35. getManagedGroupSubscriptions(user_or_id, callback) {
  36. if (callback == null) {
  37. callback = function(error, managedSubscriptions) {}
  38. }
  39. const user_id = SubscriptionLocator._getUserId(user_or_id)
  40. return Subscription.find({
  41. manager_ids: user_or_id,
  42. groupPlan: true
  43. })
  44. .populate('admin_id')
  45. .exec(callback)
  46. },
  47. getMemberSubscriptions(user_or_id, callback) {
  48. const user_id = SubscriptionLocator._getUserId(user_or_id)
  49. logger.log({ user_id }, 'getting users group subscriptions')
  50. return Subscription.find({ member_ids: user_id })
  51. .populate('admin_id')
  52. .exec(callback)
  53. },
  54. getSubscription(subscription_id, callback) {
  55. return Subscription.findOne({ _id: subscription_id }, callback)
  56. },
  57. getSubscriptionByMemberIdAndId(user_id, subscription_id, callback) {
  58. return Subscription.findOne(
  59. { member_ids: user_id, _id: subscription_id },
  60. { _id: 1 },
  61. callback
  62. )
  63. },
  64. getGroupSubscriptionsMemberOf(user_id, callback) {
  65. return Subscription.find(
  66. { member_ids: user_id },
  67. { _id: 1, planCode: 1 },
  68. callback
  69. )
  70. },
  71. getGroupsWithEmailInvite(email, callback) {
  72. return Subscription.find({ invited_emails: email }, callback)
  73. },
  74. getGroupWithV1Id(v1TeamId, callback) {
  75. return Subscription.findOne({ 'overleaf.id': v1TeamId }, callback)
  76. },
  77. _getUserId(user_or_id) {
  78. if (user_or_id != null && user_or_id._id != null) {
  79. return user_or_id._id
  80. } else if (user_or_id != null) {
  81. return user_or_id
  82. }
  83. }
  84. }
  85. SubscriptionLocator.promises = {
  86. getUsersSubscription: promisify(SubscriptionLocator.getUsersSubscription),
  87. findManagedSubscription: promisify(
  88. SubscriptionLocator.findManagedSubscription
  89. ),
  90. getManagedGroupSubscriptions: promisify(
  91. SubscriptionLocator.getManagedGroupSubscriptions
  92. ),
  93. getMemberSubscriptions: promisify(SubscriptionLocator.getMemberSubscriptions),
  94. getSubscription: promisify(SubscriptionLocator.getSubscription),
  95. getSubscriptionByMemberIdAndId: promisify(
  96. SubscriptionLocator.getSubscriptionByMemberIdAndId
  97. ),
  98. getGroupSubscriptionsMemberOf: promisify(
  99. SubscriptionLocator.getGroupSubscriptionsMemberOf
  100. ),
  101. getGroupsWithEmailInvite: promisify(
  102. SubscriptionLocator.getGroupsWithEmailInvite
  103. ),
  104. getGroupWithV1Id: promisify(SubscriptionLocator.getGroupWithV1Id)
  105. }
  106. module.exports = SubscriptionLocator