module.exports = { inputs: { record: { type: 'ref', required: true, }, request: { type: 'ref', }, }, async fn(inputs, exits) { await ProjectMembership.destroy({ userId: inputs.record.id, }); await CardSubscription.destroy({ userId: inputs.record.id, }); await CardMembership.destroy({ userId: inputs.record.id, }); const user = await User.updateOne({ id: inputs.record.id, deletedAt: null, }).set({ deletedAt: new Date().toUTCString(), }); if (user) { const adminUserIds = await sails.helpers.getAdminUserIds(); const projectIds = await sails.helpers.getMembershipProjectIdsForUser(user.id); const userIdsForProject = await sails.helpers.getMembershipUserIdsForProject(projectIds); const userIds = _.union([user.id], adminUserIds, userIdsForProject); userIds.forEach((userId) => { sails.sockets.broadcast( `user:${userId}`, 'userDelete', { item: user, }, inputs.request, ); }); } return exits.success(user); }, };