Przeglądaj źródła

Add method to update user references

Alberto Fernández Capel 8 lat temu
rodzic
commit
259d690f7c

+ 19 - 4
services/web/app/coffee/Features/Subscription/SubscriptionGroupHandler.coffee

@@ -39,12 +39,27 @@ module.exports = SubscriptionGroupHandler =
 
 
 	removeUserFromGroup: (adminUser_id, userToRemove_id, callback)->
 	removeUserFromGroup: (adminUser_id, userToRemove_id, callback)->
 		SubscriptionUpdater.removeUserFromGroup adminUser_id, userToRemove_id, callback
 		SubscriptionUpdater.removeUserFromGroup adminUser_id, userToRemove_id, callback
-	
+
 	removeEmailInviteFromGroup: (adminUser_id, email, callback) ->
 	removeEmailInviteFromGroup: (adminUser_id, email, callback) ->
 		SubscriptionUpdater.removeEmailInviteFromGroup adminUser_id, email, callback
 		SubscriptionUpdater.removeEmailInviteFromGroup adminUser_id, email, callback
 
 
+
+	replaceUserReferencesInGroups: (oldId, newId, callback) ->
+		Subscription.update {admin_id: userStubId}, {admin_id: slUserId}, (error) ->
+			callback(error) if error?
+
+			# 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.
+			query = {member_ids: userStubId}
+			addNewUserUpdate = $addToSet: {member_ids: slUserId}
+			removeOldUserUpdate = $pull: {member_ids: userStubId}
+
+			Subscription.update query, addNewUserUpdate, { multi: true }, (error) ->
+				return callback(error) if error?
+				Subscription.update query, removeOldUserUpdate, { multi: true }, callback
+
 	getPopulatedListOfMembers: (adminUser_id, callback)->
 	getPopulatedListOfMembers: (adminUser_id, callback)->
-		SubscriptionLocator.getUsersSubscription adminUser_id, (err, subscription)-> 
+		SubscriptionLocator.getUsersSubscription adminUser_id, (err, subscription)->
 			users = []
 			users = []
 			for email in subscription.invited_emails or []
 			for email in subscription.invited_emails or []
 				users.push buildEmailInviteViewModel(email)
 				users.push buildEmailInviteViewModel(email)
@@ -111,7 +126,7 @@ module.exports = SubscriptionGroupHandler =
 			async.series jobs, callback
 			async.series jobs, callback
 
 
 buildUserViewModel = (user)->
 buildUserViewModel = (user)->
-	u = 
+	u =
 		email: user.email
 		email: user.email
 		first_name: user.first_name
 		first_name: user.first_name
 		last_name: user.last_name
 		last_name: user.last_name
@@ -123,4 +138,4 @@ buildEmailInviteViewModel = (email) ->
 	return {
 	return {
 		email: email
 		email: email
 		holdingAccount: true
 		holdingAccount: true
-	}
+	}