shuttlepro-shared 1.2.52 → 1.2.54

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.
@@ -10,7 +10,9 @@ const socialMediaSettingRepository = require("./socialMediaSetting.repository");
10
10
  const chatMemberRepository = require("./chatMember.repository");
11
11
  const roleRepository = require("./role.repository");
12
12
  const userPermissionRepository = require("./userPermission.repository");
13
+ const userRolePermissionRepository = require("./userRole");
13
14
  const notificationSettingsRepository = require("./notificationSettings.repository");
15
+
14
16
  exports.module = {
15
17
  workspaceRepository,
16
18
  integrationRepository,
@@ -25,4 +27,5 @@ exports.module = {
25
27
  chatMemberRepository,
26
28
  roleRepository,
27
29
  userPermissionRepository,
30
+ userRolePermissionRepository,
28
31
  };
@@ -202,6 +202,15 @@ const bulkCreateAndUpdateUserPermissions = async (operations) => {
202
202
  return operations;
203
203
  };
204
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
+
205
214
  module.exports = {
206
215
  createUserPermission,
207
216
  findUserPermission,
@@ -215,4 +224,5 @@ module.exports = {
215
224
  deleteUserPermissionsByFilter,
216
225
  deleteAllUserPermissionsByWorkspace,
217
226
  bulkCreateAndUpdateUserPermissions,
227
+ insertManyUserPermissions,
218
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
+ };
@@ -125,6 +125,11 @@ const updateUserRole = async (id, data) => {
125
125
  return updatedRole;
126
126
  };
127
127
 
128
+ const deleteUserRoleByFilter = async (filter) => {
129
+ const deletedRole = await UserRole.findOneAndDelete(filter).exec();
130
+ return deletedRole;
131
+ };
132
+
128
133
  const deleteUserRole = async (id) => {
129
134
  const role = await UserRole.findById(id).exec();
130
135
  const userId = role?.userId;
@@ -340,13 +345,38 @@ const getChannelsPermissions = async (workspaceId, userId) => {
340
345
  }
341
346
  };
342
347
 
348
+ const findOneAndUpdateUserRole = async ({
349
+ workspaceId,
350
+ userId,
351
+ userShift,
352
+ role,
353
+ }) => {
354
+ const updatedRole = await UserRole.findOneAndUpdate(
355
+ { workspaceId, userId },
356
+ { $set: { userShift, role } },
357
+ { new: true, upsert: false }
358
+ ).exec();
359
+
360
+ if (updatedRole) {
361
+ await updateCachedMembers();
362
+ await clearUserWorkspaceCache(userId);
363
+ if (workspaceId) {
364
+ await clearUserPermissionsCache(workspaceId, userId);
365
+ }
366
+ }
367
+
368
+ return updatedRole;
369
+ };
370
+
343
371
  module.exports = {
344
372
  createUserRole,
345
373
  findUserRole,
346
374
  updateUserRole,
375
+ deleteUserRoleByFilter,
347
376
  deleteUserRole,
348
377
  findUserWorkspaces,
349
378
  getUserRoleWithPermissions,
350
379
  getUserPermissions,
351
380
  getChannelsPermissions,
381
+ findOneAndUpdateUserRole,
352
382
  };
@@ -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
+ };
@@ -7,6 +7,7 @@ const CustomerSchema = new Schema(
7
7
  email: { type: String, default: "" },
8
8
  phone: { type: String, default: "" },
9
9
  city: { type: String, default: "" },
10
+ country: { type: String, default: "pk" },
10
11
  defaultAddress: { type: String, default: "" },
11
12
  currentShippingAddress: {},
12
13
  addresses: [],
@@ -20,6 +20,7 @@ const IntegrationSchema = new mongoose.Schema(
20
20
  "instagram",
21
21
  "webChat",
22
22
  "smtp_gmail",
23
+ "outlook",
23
24
  ],
24
25
  },
25
26
  chatbot: { type: Boolean, default: false },
@@ -1,8 +1,5 @@
1
1
  const mongoose = require("mongoose");
2
- const {
3
- createDefaultLocations,
4
- addTaskManagerDefaultData,
5
- } = require("../libs/shared/helpers");
2
+ //TODO: task manager and default location creation
6
3
  const shiftSchema = new mongoose.Schema(
7
4
  {
8
5
  shiftName: {
@@ -283,18 +280,7 @@ workspaceSchema.add({
283
280
  instagramUrl: commonOptions,
284
281
  chatGptApiKey: commonOptions,
285
282
  });
286
- workspaceSchema.post("save", async function (doc) {
287
- try {
288
- if (doc?.id) {
289
- await Promise.all([
290
- createDefaultLocations(doc.id, doc.createdBy || null),
291
- addTaskManagerDefaultData(doc.id),
292
- ]);
293
- }
294
- } catch (err) {
295
- console.log("err", err);
296
- }
297
- });
283
+
298
284
  workspaceSchema.virtual("integrations", {
299
285
  ref: "Integration",
300
286
  localField: "_id",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shuttlepro-shared",
3
- "version": "1.2.52",
3
+ "version": "1.2.54",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -25,4 +25,4 @@
25
25
  "redis": "^4.6.14",
26
26
  "socket.io": "^4.8.1"
27
27
  }
28
- }
28
+ }