shuttlepro-shared 1.3.14 → 1.3.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/common/repositories/chatMember.repository.js +9 -0
  2. package/common/repositories/customerProfile.repository.js +147 -0
  3. package/common/repositories/customerTimeline.repository.js +78 -0
  4. package/common/repositories/descriptionTemplates.repository.js +229 -0
  5. package/common/repositories/index.js +34 -0
  6. package/common/repositories/integration.repository.js +210 -0
  7. package/common/repositories/label.repository.js +95 -0
  8. package/common/repositories/notificationSettings.repository.js +95 -0
  9. package/common/repositories/role.repository.js +333 -0
  10. package/common/repositories/settings.repository.js +32 -0
  11. package/common/repositories/shipper.repository.js +77 -0
  12. package/common/repositories/socialMediaSetting.repository.js +33 -0
  13. package/common/repositories/user.repository.js +150 -0
  14. package/common/repositories/userPermission.repository.js +228 -0
  15. package/common/repositories/userRepository.js +31 -0
  16. package/common/repositories/userRole.repository.js +235 -0
  17. package/common/repositories/userRolePermission.repository.js +59 -0
  18. package/common/repositories/workspace.repository.js +147 -0
  19. package/config/bull.js +78 -0
  20. package/config/config.js +14 -0
  21. package/config/database.js +4 -0
  22. package/config/index.js +13 -0
  23. package/config/redis.js +196 -0
  24. package/config/socket.js +172 -0
  25. package/constants/index.js +15 -0
  26. package/index.js +8 -0
  27. package/models/AgentActivity.js +192 -0
  28. package/models/Assignment.js +23 -0
  29. package/models/BusinessDistribution.js +23 -0
  30. package/models/Card.js +144 -0
  31. package/models/CardComments.js +33 -0
  32. package/models/ChatMember.js +17 -0
  33. package/models/Chatbot.js +20 -0
  34. package/models/Checkpoint.js +50 -0
  35. package/models/City.js +17 -0
  36. package/models/Column.js +28 -0
  37. package/models/Conversation.js +87 -0
  38. package/models/Customer.js +36 -0
  39. package/models/CustomerProfile.js +30 -0
  40. package/models/CustomerTimeline.js +28 -0
  41. package/models/DefaultRolePermission.js +34 -0
  42. package/models/DescriptionTemplate.js +22 -0
  43. package/models/Integration.js +51 -0
  44. package/models/Label.js +42 -0
  45. package/models/Message.js +47 -0
  46. package/models/NewProduct.js +71 -0
  47. package/models/NotificationSettings.js +130 -0
  48. package/models/Order.js +254 -0
  49. package/models/OrderProduct.js +37 -0
  50. package/models/Profile.js +127 -0
  51. package/models/Report.js +27 -0
  52. package/models/Setting.js +18 -0
  53. package/models/Shipper.js +62 -0
  54. package/models/SocialMediaSetting.js +28 -0
  55. package/models/Status.js +58 -0
  56. package/models/StatusType.js +10 -0
  57. package/models/Step.js +50 -0
  58. package/models/Type.js +25 -0
  59. package/models/UserRole.js +1 -119
  60. package/models/UserWorkflow.js +46 -0
  61. package/models/Workspace.js +308 -0
  62. package/models.js +62 -1
  63. package/package.json +13 -2
  64. package/utils/decorator-factory.js +264 -0
  65. package/utils/logger.js +41 -0
@@ -0,0 +1,150 @@
1
+ const { getRedisData, setRedisData } = require("../../config/redis");
2
+ const mongoose = require("mongoose");
3
+ const userSchema = require("../../models/User");
4
+ const User = mongoose.models.User || mongoose.model("User", userSchema);
5
+
6
+ const CACHE_KEY_ALL_USERS = "users_all";
7
+
8
+ const getCachedUsers = async () => {
9
+ try {
10
+ let users = await getRedisData(CACHE_KEY_ALL_USERS);
11
+ if (!users) {
12
+ users = await User.find().lean().exec();
13
+ await setRedisData(CACHE_KEY_ALL_USERS, users);
14
+ }
15
+ return users;
16
+ } catch (error) {
17
+ console.error("Error fetching cached users:", error);
18
+ return [];
19
+ }
20
+ };
21
+
22
+ const updateCachedUsers = async () => {
23
+ try {
24
+ const users = await User.find().lean().exec();
25
+ await setRedisData(CACHE_KEY_ALL_USERS, users);
26
+ } catch (error) {
27
+ console.error("Error updating cached users:", error);
28
+ }
29
+ };
30
+
31
+ const createUser = async (data) => {
32
+ const newUser = new User(data);
33
+ const savedUser = await newUser.save();
34
+ await updateCachedUsers();
35
+ return savedUser;
36
+ };
37
+
38
+ const findUserById = async (id, select = []) => {
39
+ try {
40
+ let users = await getCachedUsers();
41
+ let user = users.find((u) => u._id.toString() === id) || null;
42
+
43
+ if (!user) {
44
+ user = await User.findById(id).lean().exec();
45
+ if (user) await updateCachedUsers(); // Refresh cache if outdated
46
+ }
47
+
48
+ if (user && select.length > 0) {
49
+ return select.reduce((result, field) => {
50
+ if (user[field] !== undefined) result[field] = user[field];
51
+ return result;
52
+ }, {});
53
+ }
54
+ return user;
55
+ } catch (error) {
56
+ console.error("Error finding user by ID:", error);
57
+ return null;
58
+ }
59
+ };
60
+
61
+ const findUser = async (filter) => {
62
+ try {
63
+ const users = await getCachedUsers();
64
+ const user = users.find((u) =>
65
+ Object.entries(filter).every(([key, value]) => {
66
+ if (Array.isArray(value)) {
67
+ return value.includes(u[key]);
68
+ }
69
+ return u[key] === value;
70
+ })
71
+ );
72
+
73
+ if (!user) {
74
+ // Fallback to database if not found in cache
75
+ const dbUser = await User.findOne(filter).lean().exec();
76
+ if (dbUser) await updateCachedUsers(); // Refresh cache if outdated
77
+ return dbUser;
78
+ }
79
+
80
+ return user;
81
+ } catch (error) {
82
+ console.error("Error finding user:", error);
83
+ return null;
84
+ }
85
+ };
86
+
87
+ const findUsersByFilter = async (filter = {}) => {
88
+ try {
89
+ const users = await getCachedUsers();
90
+ return users.filter((u) =>
91
+ Object.entries(filter).every(([key, value]) => {
92
+ if (Array.isArray(value)) {
93
+ return value.includes(u[key]);
94
+ }
95
+ return u[key] === value;
96
+ })
97
+ );
98
+ } catch (error) {
99
+ console.error("Error finding users by filter:", error);
100
+ return [];
101
+ }
102
+ };
103
+
104
+ const findAllUsers = async (filter = {}) => {
105
+ const users = await getCachedUsers();
106
+ return users.filter((u) =>
107
+ Object.entries(filter).every(([key, value]) => {
108
+ if (Array.isArray(value)) {
109
+ return value.includes(u[key]);
110
+ }
111
+ return u[key] === value;
112
+ })
113
+ );
114
+ };
115
+
116
+ const getUserName = async (id) => {
117
+ const user = await findUserById(id, ["firstName", "lastName"]);
118
+ return user?.firstName || user?.lastName
119
+ ? `${user.firstName} ${user.lastName}`.trim()
120
+ : "Unknown User";
121
+ };
122
+
123
+ const updateUser = async (id, data) => {
124
+ const updatedUser = await User.findByIdAndUpdate(id, data, {
125
+ new: true,
126
+ }).exec();
127
+ if (updatedUser) {
128
+ await updateCachedUsers();
129
+ }
130
+ return updatedUser;
131
+ };
132
+
133
+ const deleteUser = async (id) => {
134
+ const deletedUser = await User.findByIdAndDelete(id).exec();
135
+ if (deletedUser) {
136
+ await updateCachedUsers();
137
+ }
138
+ return deletedUser;
139
+ };
140
+
141
+ module.exports = {
142
+ createUser,
143
+ findUserById,
144
+ findUser,
145
+ findUsersByFilter,
146
+ findAllUsers,
147
+ getUserName,
148
+ updateUser,
149
+ deleteUser,
150
+ };
@@ -0,0 +1,228 @@
1
+ const { getRedisData, setRedisData } = require("../../config/redis");
2
+ const UserPermission = require("../../models/UserPermission");
3
+
4
+ const CACHE_KEY_ALL = "user_permissions_all";
5
+
6
+ /**
7
+ * Get cached user permissions for all users.
8
+ */
9
+ const getCachedAllUserPermissions = async () => {
10
+ let permissions = await getRedisData(CACHE_KEY_ALL);
11
+ if (!permissions) {
12
+ permissions = await UserPermission.find({}).lean().exec();
13
+ await setRedisData(CACHE_KEY_ALL, permissions);
14
+ }
15
+ return permissions;
16
+ };
17
+
18
+ /**
19
+ * Update cached user permissions for all users.
20
+ */
21
+ const updateCachedAllUserPermissions = async () => {
22
+ const permissions = await UserPermission.find({}).lean().exec();
23
+ await setRedisData(CACHE_KEY_ALL, permissions);
24
+ };
25
+
26
+ /**
27
+ * Get cached user permissions for a specific user.
28
+ * Uses the all permissions cache and filters by userId.
29
+ */
30
+ const getCachedUserPermissions = async (userId) => {
31
+ const allPermissions = await getCachedAllUserPermissions();
32
+ return allPermissions.filter((perm) => perm.userId === userId);
33
+ };
34
+
35
+ /**
36
+ * Create a new user permission and update cache.
37
+ */
38
+ const createUserPermission = async (data) => {
39
+ const newPermission = new UserPermission(data);
40
+ const savedPermission = await newPermission.save();
41
+
42
+ // Update the main cache
43
+ await updateCachedAllUserPermissions();
44
+
45
+ return savedPermission;
46
+ };
47
+
48
+ /**
49
+ * Find user permissions by user ID.
50
+ */
51
+ const findUserPermissionsByUserId = async (userId) => {
52
+ return await getCachedUserPermissions(userId);
53
+ };
54
+
55
+ /**
56
+ * Find user permissions by user ID and workspace ID.
57
+ */
58
+ const fetchUserPermissionsByWorkspaceId = async (userId, workspaceId) => {
59
+ const allPermissions = await getCachedAllUserPermissions();
60
+ return allPermissions.filter(
61
+ (perm) => perm.userId === userId && perm.workspaceId === workspaceId
62
+ );
63
+ };
64
+
65
+ /**
66
+ * Find a single user permission by filter.
67
+ */
68
+ const findUserPermission = async (filter, workspaceId = null) => {
69
+ const allPermissions = await getCachedAllUserPermissions();
70
+
71
+ let filteredPermissions = allPermissions;
72
+ if (workspaceId) {
73
+ filteredPermissions = allPermissions.filter(
74
+ (perm) => perm.workspaceId === workspaceId
75
+ );
76
+ }
77
+
78
+ return (
79
+ filteredPermissions.find((perm) =>
80
+ Object.entries(filter).every(([key, value]) => perm[key] === value)
81
+ ) || null
82
+ );
83
+ };
84
+
85
+ /**
86
+ * Find all user permissions that match a filter.
87
+ */
88
+ const findAllUserPermissionsByFilter = async (
89
+ filter = {},
90
+ workspaceId = null
91
+ ) => {
92
+ const allPermissions = await getCachedAllUserPermissions();
93
+
94
+ let filteredPermissions = allPermissions;
95
+ if (workspaceId) {
96
+ filteredPermissions = allPermissions.filter(
97
+ (perm) => perm.workspaceId === workspaceId
98
+ );
99
+ }
100
+
101
+ return (
102
+ filteredPermissions.filter((perm) =>
103
+ Object.entries(filter).every(([key, value]) => perm[key] === value)
104
+ ) || []
105
+ );
106
+ };
107
+
108
+ /**
109
+ * Find all user permissions (without filtering).
110
+ */
111
+ const findAllUserPermissions = async () => {
112
+ return await getCachedAllUserPermissions();
113
+ };
114
+
115
+ /**
116
+ * Update a user permission by ID.
117
+ */
118
+ const updateUserPermission = async (id, data) => {
119
+ const updatedPermission = await UserPermission.findByIdAndUpdate(id, data, {
120
+ new: true,
121
+ }).exec();
122
+
123
+ if (updatedPermission) {
124
+ // Update the main cache
125
+ await updateCachedAllUserPermissions();
126
+ }
127
+
128
+ return updatedPermission;
129
+ };
130
+
131
+ /**
132
+ * Update a user permission by filter.
133
+ */
134
+ const updateUserPermissionByFilter = async (
135
+ filter,
136
+ data,
137
+ workspaceId = null
138
+ ) => {
139
+ // Add workspace filter if provided
140
+ const queryFilter = workspaceId ? { ...filter, workspaceId } : filter;
141
+
142
+ const updatedPermission = await UserPermission.findOneAndUpdate(
143
+ queryFilter,
144
+ data,
145
+ {
146
+ new: true,
147
+ }
148
+ ).exec();
149
+
150
+ if (updatedPermission) {
151
+ // Update the main cache
152
+ await updateCachedAllUserPermissions();
153
+ }
154
+
155
+ return updatedPermission;
156
+ };
157
+
158
+ /**
159
+ * Delete a user permission by ID.
160
+ */
161
+ const deleteUserPermission = async (id) => {
162
+ const deletedPermission = await UserPermission.findByIdAndDelete(id).exec();
163
+
164
+ if (deletedPermission) {
165
+ // Update the main cache
166
+ await updateCachedAllUserPermissions();
167
+ }
168
+
169
+ return deletedPermission;
170
+ };
171
+
172
+ /**
173
+ * Delete user permissions by filter.
174
+ */
175
+ const deleteUserPermissionsByFilter = async (filter) => {
176
+ const result = await UserPermission.deleteMany(filter).exec();
177
+
178
+ if (result.deletedCount > 0) {
179
+ // Update the main cache
180
+ await updateCachedAllUserPermissions();
181
+ }
182
+
183
+ return result;
184
+ };
185
+
186
+ /**
187
+ * Delete all user permissions for a specific workspace.
188
+ */
189
+ const deleteAllUserPermissionsByWorkspace = async (workspaceId) => {
190
+ await UserPermission.deleteMany({ workspaceId }).exec();
191
+
192
+ // Update the main cache
193
+ await updateCachedAllUserPermissions();
194
+ };
195
+
196
+ /**
197
+ * Bulk create or update user permissions.
198
+ */
199
+ const bulkCreateAndUpdateUserPermissions = async (operations) => {
200
+ await UserPermission.bulkWrite(operations);
201
+ await updateCachedAllUserPermissions();
202
+ return operations;
203
+ };
204
+
205
+ /**
206
+ * Insert multiple user permissions and update cache.
207
+ */
208
+ const insertManyUserPermissions = async (permissionsArray) => {
209
+ const inserted = await UserPermission.insertMany(permissionsArray);
210
+ await updateCachedAllUserPermissions();
211
+ return inserted;
212
+ };
213
+
214
+ module.exports = {
215
+ createUserPermission,
216
+ findUserPermission,
217
+ findUserPermissionsByUserId,
218
+ fetchUserPermissionsByWorkspaceId,
219
+ findAllUserPermissionsByFilter,
220
+ findAllUserPermissions,
221
+ updateUserPermission,
222
+ updateUserPermissionByFilter,
223
+ deleteUserPermission,
224
+ deleteUserPermissionsByFilter,
225
+ deleteAllUserPermissionsByWorkspace,
226
+ bulkCreateAndUpdateUserPermissions,
227
+ insertManyUserPermissions,
228
+ };
@@ -0,0 +1,31 @@
1
+ const User = require("../../models/User");
2
+
3
+ const createUser = async (data) => {
4
+ const newUser = new User(data);
5
+ const savedUser = await newUser.save();
6
+ return savedUser;
7
+ };
8
+
9
+ const findUser = async (filter) => {
10
+ return await User.findOne(filter).exec();
11
+ };
12
+
13
+ const updateUser = async (id, data) => {
14
+ const updatedUser = await User.findByIdAndUpdate(id, data, {
15
+ new: true,
16
+ }).exec();
17
+
18
+ return updatedUser;
19
+ };
20
+
21
+ const deleteUser = async (id) => {
22
+ const deletedUser = await User.findByIdAndDelete(id).exec();
23
+ return deletedUser;
24
+ };
25
+
26
+ module.exports = {
27
+ createUser,
28
+ findUser,
29
+ updateUser,
30
+ deleteUser,
31
+ };
@@ -0,0 +1,235 @@
1
+ const { UserRole } = require("../../models/UserRole");
2
+ const { getRedisData, setRedisData } = require("../../config/redis");
3
+
4
+ const defaultSelect =
5
+ "iconUrl thumbUrl name productsCount ordersCount contact email address websiteUrl facebookUrl twitterUrl instagramUrl members defaultModule";
6
+
7
+ // Cache keys
8
+ const MEMBERS = "members";
9
+
10
+ // Update the cache for all members
11
+ const updateCachedMembers = async (workspaceId) => {
12
+ try {
13
+ const members = await UserRole.find({ workspaceId })
14
+ .select("userId role userShift roleId isOwner workspaceId")
15
+ .populate({
16
+ path: "roleId",
17
+ select:
18
+ "id name userId userShift permissionId modulePermissions workspaceId",
19
+ populate: [{ path: "permissionId", select: "id name" }],
20
+ })
21
+ .populate({
22
+ path: "userId",
23
+ match: { isDeleted: false, suspended: false },
24
+ select: "firstName lastName role email picture userShift",
25
+ })
26
+ .lean()
27
+ .exec();
28
+ await setRedisData(workspaceId, members, MEMBERS, 3600);
29
+ return members;
30
+ } catch (error) {
31
+ console.error("Error updating cached members:", error);
32
+ return [];
33
+ }
34
+ };
35
+
36
+ const getMembers = async (workspaceId) => {
37
+ let members = await getRedisData(workspaceId, MEMBERS);
38
+ if (!members || members?.length === 0) {
39
+ members = await UserRole.find({ workspaceId })
40
+ .select("userId role userShift roleId isOwner workspaceId")
41
+ .populate({
42
+ path: "roleId",
43
+ select:
44
+ "id name userId userShift permissionId modulePermissions workspaceId",
45
+ populate: [{ path: "permissionId", select: "id name" }],
46
+ })
47
+ .populate({
48
+ path: "userId",
49
+ match: { isDeleted: false, suspended: false },
50
+ select: "firstName lastName role email picture userShift",
51
+ })
52
+ .lean()
53
+ .exec();
54
+ await setRedisData(workspaceId, members, MEMBERS, 3600);
55
+ }
56
+ return members;
57
+ };
58
+
59
+ const getMemberByWorkspaceIdAndUserId = async (workspaceId, userId) => {
60
+ const members = await getMembers(workspaceId);
61
+ return (
62
+ members?.find(
63
+ (member) =>
64
+ member?.workspaceId === workspaceId && member?.userId?._id === userId
65
+ ) || null
66
+ );
67
+ };
68
+
69
+ // Find single user role by filter
70
+ const findSingleUserRoleByFilter = async ({ workspaceId, userId }) => {
71
+ return await getMemberByWorkspaceIdAndUserId(workspaceId, userId);
72
+ };
73
+
74
+ const findAllUserRoles = async (workspaceId) => {
75
+ return await getMembers(workspaceId);
76
+ };
77
+
78
+ const createUserRole = async (data) => {
79
+ const savedRole = await UserRole.create(data);
80
+ return await updateCachedMembers(savedRole?.workspaceId?.toString());
81
+ };
82
+
83
+ const findOneAndUpdateUserRole = async (filter, payload) => {
84
+ await UserRole.findOneAndUpdate(
85
+ filter,
86
+ { $set: payload },
87
+ { new: true, upsert: false }
88
+ )
89
+ .lean()
90
+ .exec();
91
+ return await updateCachedMembers(filter.workspaceId);
92
+ };
93
+
94
+ const updateUserRole = async (filter, payload) => {
95
+ await UserRole.updateOne(filter, payload).exec();
96
+ return await updateCachedMembers(filter.workspaceId);
97
+ };
98
+
99
+ // Update multiple user roles based on filter
100
+ const updateManyUserRoles = async (filter, payload) => {
101
+ await UserRole.updateMany(filter, { $set: payload }).exec();
102
+ return await updateCachedMembers(filter.workspaceId);
103
+ };
104
+
105
+ const deleteUserRoleByFilter = async (filter) => {
106
+ await UserRole.deleteOne(filter).exec();
107
+ return await updateCachedMembers(filter.workspaceId);
108
+ };
109
+
110
+ const convertPermissionsArrayToObject = (originalArray) => {
111
+ return originalArray?.reduce((acc, item) => {
112
+ const { id, actions, integrationPermissions, ...extras } = item;
113
+ const formattedExtras = {};
114
+ if (extras.deletable !== undefined) {
115
+ formattedExtras.deletable = extras.deletable;
116
+ }
117
+ if (extras.createUpdateable !== undefined) {
118
+ formattedExtras.createUpdateable = extras.createUpdateable;
119
+ }
120
+ acc[id] = {
121
+ actions: Object.keys(actions).filter((action) => actions[action]),
122
+ ...formattedExtras,
123
+ ...(integrationPermissions && {
124
+ integrationPermissions: Object.entries(integrationPermissions)
125
+ .filter(([_, allowed]) => allowed)
126
+ .map(([key]) => key),
127
+ }),
128
+ };
129
+ return acc;
130
+ }, {});
131
+ };
132
+
133
+ const getUserPermissions = async (workspaceId, userId) => {
134
+ try {
135
+ let data = await getMemberByWorkspaceIdAndUserId(workspaceId, userId);
136
+ if (data) {
137
+ return (
138
+ convertPermissionsArrayToObject(
139
+ data?.roleId?.modulePermissions?.modules
140
+ ) || null
141
+ );
142
+ }
143
+ return null;
144
+ } catch (err) {
145
+ console.error("Error in getUserPermissions:", err);
146
+ return null;
147
+ }
148
+ };
149
+
150
+ const getUserRoleWithPermissions = async (workspaceId, userId) => {
151
+ try {
152
+ let data = await getMemberByWorkspaceIdAndUserId(workspaceId, userId);
153
+ if (data) {
154
+ const roleWithPermissions = {
155
+ ...data,
156
+ roleId: data?.roleId?._id?.toString() || "",
157
+ role: data?.roleId?.name || "",
158
+ permissions:
159
+ convertPermissionsArrayToObject(
160
+ data?.roleId?.modulePermissions?.modules
161
+ ) || [],
162
+ parentRole: data?.roleId?.permissionId?.name || "",
163
+ parentRoleId: data?.roleId?.permissionId?._id?.toString() || "",
164
+ defaultModule: data?.roleId?.defaultModule || "",
165
+ };
166
+ return roleWithPermissions || null;
167
+ }
168
+ return null;
169
+ } catch (err) {
170
+ console.error("Error in getUserRoleWithPermissions:", err);
171
+ return null;
172
+ }
173
+ };
174
+
175
+ const getChannelsPermissions = async (workspaceId, userId) => {
176
+ try {
177
+ let data = await getMemberByWorkspaceIdAndUserId(workspaceId, userId);
178
+ if (data) {
179
+ return (
180
+ convertPermissionsArrayToObject(
181
+ data?.roleId?.modulePermissions?.modules
182
+ )?.["conversations"]?.["integrationPermissions"] || []
183
+ );
184
+ }
185
+ return [];
186
+ } catch (err) {
187
+ console.error("Error in getChannelsPermissions:", err);
188
+ return [];
189
+ }
190
+ };
191
+
192
+ const findUserWorkspaces = async (userId) => {
193
+ let userRoleWithWorkspaces = await UserRole.find({ userId: userId })
194
+ .select("userId roleId workspaceId")
195
+ .populate({
196
+ path: "roleId",
197
+ select: "id name userId userShift permissionId modulePermissions",
198
+ populate: [{ path: "permissionId", select: "id name" }],
199
+ })
200
+ .populate({
201
+ path: "workspaceId",
202
+ select: defaultSelect,
203
+ match: { isDeleted: false },
204
+ })
205
+ .lean()
206
+ .exec();
207
+ userRoleWithWorkspaces = userRoleWithWorkspaces
208
+ ?.filter((userRole) => userRole?.workspaceId)
209
+ ?.filter((userRole) => userRole?.roleId)
210
+ ?.map((ur) => {
211
+ return {
212
+ ...ur?.workspaceId,
213
+ id: ur?.workspaceId?._id?.toString(),
214
+ _id: ur?.workspaceId?._id?.toString(),
215
+ role: ur?.roleId?.name || "",
216
+ permissions: ur?.roleId?.modulePermissions?.modules || [],
217
+ };
218
+ });
219
+ return userRoleWithWorkspaces || [];
220
+ };
221
+
222
+ module.exports = {
223
+ createUserRole,
224
+ updateUserRole,
225
+ updateManyUserRoles,
226
+ findAllUserRoles,
227
+ deleteUserRoleByFilter,
228
+ findUserWorkspaces,
229
+ getUserRoleWithPermissions,
230
+ getUserPermissions,
231
+ getChannelsPermissions,
232
+ findOneAndUpdateUserRole,
233
+ findSingleUserRoleByFilter,
234
+ updateCachedMembers,
235
+ };
@@ -0,0 +1,59 @@
1
+ const DefaultRolePermission = require("../../models/DefaultRolePermission");
2
+
3
+ const createDefaultRolePermission = async (data) => {
4
+ const newPermission = new DefaultRolePermission(data);
5
+ const savedPermission = await newPermission.save();
6
+ return savedPermission;
7
+ };
8
+
9
+ const findDefaultRolePermission = async (filter) => {
10
+ return await DefaultRolePermission.findOne(filter).exec();
11
+ };
12
+
13
+ const findAllDefaultRolePermissions = async (filter = {}) => {
14
+ return await DefaultRolePermission.find(filter).exec();
15
+ };
16
+
17
+ const updateDefaultRolePermission = async (id, data) => {
18
+ const updatedPermission = await DefaultRolePermission.findByIdAndUpdate(
19
+ id,
20
+ data,
21
+ {
22
+ new: true,
23
+ }
24
+ ).exec();
25
+ return updatedPermission;
26
+ };
27
+
28
+ const deleteDefaultRolePermission = async (id) => {
29
+ const deletedPermission = await DefaultRolePermission.findByIdAndDelete(
30
+ id
31
+ ).exec();
32
+ return deletedPermission;
33
+ };
34
+
35
+ const deleteDefaultRolePermissionsByFilter = async (filter) => {
36
+ const deleted = await DefaultRolePermission.deleteMany(filter).exec();
37
+ return deleted;
38
+ };
39
+
40
+ const deleteOneDefaultRolePermissionByFilter = async (filter) => {
41
+ const deleted = await DefaultRolePermission.findOneAndDelete(filter).exec();
42
+ return deleted;
43
+ };
44
+
45
+ const insertManyUserPermissions = async (permissionsArray) => {
46
+ const inserted = await UserPermission.insertMany(permissionsArray);
47
+ return inserted;
48
+ };
49
+
50
+ module.exports = {
51
+ createDefaultRolePermission,
52
+ findDefaultRolePermission,
53
+ findAllDefaultRolePermissions,
54
+ updateDefaultRolePermission,
55
+ deleteDefaultRolePermission,
56
+ deleteDefaultRolePermissionsByFilter,
57
+ deleteOneDefaultRolePermissionByFilter,
58
+ insertManyUserPermissions,
59
+ };