| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- const { callbackify } = require('util')
- const SubscriptionUpdater = require('./SubscriptionUpdater')
- const SubscriptionLocator = require('./SubscriptionLocator')
- const { Subscription } = require('../../models/Subscription')
- async function removeUserFromGroup(subscriptionId, userIdToRemove) {
- await SubscriptionUpdater.promises.removeUserFromGroup(
- subscriptionId,
- userIdToRemove
- )
- }
- async function replaceUserReferencesInGroups(oldId, newId) {
- await Subscription.updateOne({ admin_id: oldId }, { admin_id: newId }).exec()
- await _replaceInArray(Subscription, 'manager_ids', oldId, newId)
- await _replaceInArray(Subscription, 'member_ids', oldId, newId)
- }
- async function isUserPartOfGroup(userId, subscriptionId) {
- const subscription =
- await SubscriptionLocator.promises.getSubscriptionByMemberIdAndId(
- userId,
- subscriptionId
- )
- return !!subscription
- }
- async function getTotalConfirmedUsersInGroup(subscriptionId) {
- const subscription =
- await SubscriptionLocator.promises.getSubscription(subscriptionId)
- return subscription?.member_ids?.length
- }
- async function _replaceInArray(model, property, oldValue, newValue) {
- // Mongo won't let us pull and addToSet in the same query, so do it in
- // two. Note we need to add first, since the query is based on the old user.
- const query = {}
- query[property] = oldValue
- const setNewValue = {}
- setNewValue[property] = newValue
- const setOldValue = {}
- setOldValue[property] = oldValue
- await model.updateMany(query, { $addToSet: setNewValue })
- await model.updateMany(query, { $pull: setOldValue })
- }
- module.exports = {
- removeUserFromGroup: callbackify(removeUserFromGroup),
- replaceUserReferencesInGroups: callbackify(replaceUserReferencesInGroups),
- getTotalConfirmedUsersInGroup: callbackify(getTotalConfirmedUsersInGroup),
- isUserPartOfGroup: callbackify(isUserPartOfGroup),
- promises: {
- removeUserFromGroup,
- replaceUserReferencesInGroups,
- getTotalConfirmedUsersInGroup,
- isUserPartOfGroup,
- },
- }
|