shuttlepro-shared 1.1.91 → 1.1.93

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 (45) hide show
  1. package/constants/index.js +0 -15
  2. package/index.js +0 -8
  3. package/models/Role.js +40 -0
  4. package/models/UserPermission.js +5 -0
  5. package/models/UserRole.js +10 -3
  6. package/models.js +3 -50
  7. package/package.json +2 -13
  8. package/common/repositories/descriptionTemplates.repository.js +0 -186
  9. package/common/repositories/index.js +0 -10
  10. package/common/repositories/integration.repository.js +0 -197
  11. package/common/repositories/shipper.repository.js +0 -77
  12. package/common/repositories/workspace.repository.js +0 -95
  13. package/config/bull.js +0 -78
  14. package/config/config.js +0 -14
  15. package/config/database.js +0 -7
  16. package/config/index.js +0 -13
  17. package/config/redis.js +0 -160
  18. package/config/socket.js +0 -172
  19. package/models/AgentActivity.js +0 -189
  20. package/models/Assignment.js +0 -23
  21. package/models/BusinessDistribution.js +0 -23
  22. package/models/Card.js +0 -144
  23. package/models/CardComments.js +0 -33
  24. package/models/Chatbot.js +0 -16
  25. package/models/Checkpoint.js +0 -50
  26. package/models/City.js +0 -17
  27. package/models/Column.js +0 -28
  28. package/models/Conversation.js +0 -84
  29. package/models/Customer.js +0 -35
  30. package/models/DescriptionTemplate.js +0 -22
  31. package/models/Integration.js +0 -53
  32. package/models/Label.js +0 -42
  33. package/models/Message.js +0 -47
  34. package/models/Order.js +0 -131
  35. package/models/OrderProduct.js +0 -37
  36. package/models/Profile.js +0 -127
  37. package/models/Report.js +0 -27
  38. package/models/Shipper.js +0 -52
  39. package/models/Status.js +0 -58
  40. package/models/StatusType.js +0 -10
  41. package/models/Step.js +0 -50
  42. package/models/Type.js +0 -25
  43. package/models/Workspace.js +0 -190
  44. package/utils/decorator-factory.js +0 -264
  45. package/utils/logger.js +0 -41
@@ -1,189 +0,0 @@
1
- const mongoose = require("mongoose");
2
- const { Schema } = mongoose;
3
-
4
- const breakSchema = new mongoose.Schema({
5
- refId: { type: String, required: true },
6
- breakId: { type: String, required: false },
7
- startTime: { type: Date, required: true },
8
- endTime: { type: Date, required: false },
9
- });
10
-
11
- const responseSchema = new mongoose.Schema({
12
- queryMessageId: { type: [String], default: [] },
13
- responseMessageId: { type: [String], default: [] },
14
- responseTime: { type: Number, required: false },
15
- accuracy: { type: Number, required: false, default: 10 },
16
- });
17
-
18
- const activitySchema = new mongoose.Schema({
19
- refId: { type: String, required: true },
20
- type: {
21
- type: String,
22
- required: true,
23
- default: "other",
24
- enum: ["conversation", "ticket", "order", "other"],
25
- },
26
- platformName: { type: String, required: false },
27
- platformType: { type: String, required: false },
28
- customerName: { type: String, default: "", required: false },
29
- conversationId: { type: String, default: "", required: false },
30
- profileId: { type: String, required: false },
31
- conversationType: {
32
- type: String,
33
- enum: ["email", "comment", "message", ""],
34
- default: "",
35
- required: false,
36
- },
37
- status: { type: String, required: false, default: "unassigned" },
38
- labels: [{ type: Schema.Types.ObjectId, ref: "Label" }],
39
- platformId: { type: String, required: false },
40
- assignTime: { type: Date, required: false },
41
- qaScore: { type: Number, required: false, default: 10 },
42
- startTime: { type: String, required: false },
43
- endTime: { type: String, required: false },
44
- resolutionTime: { type: String, required: false },
45
- responses: { type: [responseSchema], default: [] },
46
- remarks: { type: String, required: false },
47
- avgAccuracy: { type: Number, required: false, default: 10 },
48
- });
49
-
50
- const totalActivitySchema = new mongoose.Schema({
51
- type: { type: String, required: true },
52
- platformType: { type: String, required: false },
53
- count: { type: Number, required: true },
54
- });
55
-
56
- const agentActivitySchema = new mongoose.Schema(
57
- {
58
- _id: {
59
- type: mongoose.Schema.Types.ObjectId,
60
- default: mongoose.Types.ObjectId,
61
- },
62
- agentId: { type: String, required: true },
63
- agentRole: { type: String, default: "" },
64
- agentName: { type: String, required: false },
65
- agentShift: { type: Object, default: {}, required: false },
66
- workspaceId: {
67
- type: mongoose.Schema.Types.ObjectId,
68
- required: true,
69
- ref: "Workspace",
70
- },
71
- date: { type: String, required: true },
72
- lateMinutes: {
73
- type: Number,
74
- default: 0,
75
- },
76
- earlyLeaveMinutes: {
77
- type: Number,
78
- default: 0,
79
- },
80
- shiftStartTime: { type: [Date], default: [] },
81
- shiftEndTime: { type: [Date], default: [] },
82
- shifts: [
83
- {
84
- shiftStartTime: { type: Date, required: true, default: null },
85
- shiftEndTime: { type: Date, required: false, default: null },
86
- },
87
- ],
88
- isLate: { type: Boolean, required: true, default: false },
89
- isEarlyLeave: { type: Boolean, required: true, default: false },
90
- breaks: { type: [breakSchema], default: [] },
91
- activities: { type: [activitySchema], default: [] },
92
- totalPsc: { type: Number, required: false, default: 0 },
93
- totalQa: { type: Number, required: false, default: 0 },
94
- weightedQa: { type: Number, required: false, default: 0 },
95
- weightedPsc: { type: Number, required: false, default: 0 },
96
- kpiScore: { type: Number, required: false, default: 0 },
97
- totalActivities: { type: [totalActivitySchema], default: [] },
98
- totalWorkTime: { type: Number, required: false, default: 0 },
99
- totalBreakTime: { type: Number, required: false, default: 0 },
100
- totalIdleTime: { type: Number, required: false, default: 0 },
101
- },
102
- { timestamps: true, toJSON: { virtuals: true }, toObject: { virtuals: true } }
103
- );
104
-
105
- agentActivitySchema.index({ workspaceId: 1 });
106
- agentActivitySchema.index({ date: 1 });
107
- agentActivitySchema.index({ agentId: 1 });
108
- agentActivitySchema.index({ "activities.platformId": 1 });
109
- agentActivitySchema.index({ "activities.labels": 1 });
110
- agentActivitySchema.index({ workspaceId: 1, date: 1, agentId: 1 });
111
- agentActivitySchema.index({
112
- workspaceId: 1,
113
- date: 1,
114
- agentId: 1,
115
- "activities.platformId": 1,
116
- "activities.labels": 1,
117
- });
118
- agentActivitySchema.index({
119
- workspaceId: 1,
120
- date: 1,
121
- agentId: 1,
122
- "activities.platformId": 1,
123
- });
124
- agentActivitySchema.index({
125
- workspaceId: 1,
126
- date: 1,
127
- agentId: 1,
128
- "activities.labels": 1,
129
- });
130
- agentActivitySchema.index(
131
- { "activities.platformId": 1, "activities.labels": 1 },
132
- {
133
- partialFilterExpression: {
134
- "activities.platformId": { $exists: true },
135
- "activities.labels": { $exists: true },
136
- },
137
- }
138
- );
139
- const AgentActivity = mongoose.model("AgentActivity", agentActivitySchema);
140
-
141
- const findOneAndUpdateAgentActivity = async (
142
- findQuery = {},
143
- updateQuery = null
144
- ) => {
145
- try {
146
- if (!findQuery || Object.values(findQuery).length === 0) {
147
- console.log("Find Query is required.");
148
- return null;
149
- }
150
-
151
- const agentActivityForActivitiesUpdated = await AgentActivity.findOne(
152
- findQuery
153
- ).sort({ createdAt: -1 });
154
-
155
- if (!agentActivityForActivitiesUpdated) {
156
- console.log("No matching record found.");
157
- return null;
158
- }
159
-
160
- const bsonSize = require("bson").calculateObjectSize(
161
- agentActivityForActivitiesUpdated
162
- );
163
-
164
- if (bsonSize <= 1000000) {
165
- return await AgentActivity.findOneAndUpdate(findQuery, updateQuery);
166
- } else {
167
- const { breaks, activities, totalActivities, ...restData } =
168
- agentActivityForActivitiesUpdated.toObject();
169
-
170
- const newAgentActivity = await AgentActivity.create({
171
- ...restData,
172
- });
173
-
174
- const agentActivityRecord = await AgentActivity.findOneAndUpdate(
175
- { ...findQuery, _id: newAgentActivity._id },
176
- updateQuery
177
- );
178
-
179
- return agentActivityRecord;
180
- }
181
- } catch (err) {
182
- console.error("Error:", err);
183
- return null;
184
- }
185
- };
186
- module.exports = {
187
- AgentActivity,
188
- findOneAndUpdateAgentActivity,
189
- };
@@ -1,23 +0,0 @@
1
- const mongoose = require("mongoose");
2
-
3
- const assignmentSchema = new mongoose.Schema({
4
- cardId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: "Card",
7
- required: true,
8
- },
9
- id: {
10
- type: String,
11
- required: true,
12
- },
13
- name: {
14
- type: String,
15
- },
16
- email: {
17
- type: String,
18
- },
19
- });
20
-
21
- const Assignment = mongoose.model("Assignment", assignmentSchema);
22
-
23
- module.exports = Assignment;
@@ -1,23 +0,0 @@
1
- const mongoose = require("mongoose");
2
- const { Schema } = mongoose;
3
-
4
- const businessDistributionSchema = new mongoose.Schema(
5
- {
6
- name: { type: String, default: "" },
7
- deliveryCharges: { type: String, default: "" },
8
- shippers: [],
9
- type: {
10
- type: String,
11
- enum: ["default", "cities"],
12
- required: true,
13
- },
14
- index: { type: String, default: "" },
15
- workspaceId: { type: String, default: "" },
16
- },
17
- { timestamps: true, toJSON: { virtuals: true }, toObject: { virtuals: true } }
18
- );
19
-
20
- module.exports = mongoose.model(
21
- "BusinessDistribution",
22
- businessDistributionSchema
23
- );
package/models/Card.js DELETED
@@ -1,144 +0,0 @@
1
- const mongoose = require("mongoose");
2
- const { DYNAMIC_FIELD_TYPES } = require("../constants");
3
-
4
- const cardSchema = new mongoose.Schema(
5
- {
6
- cardId: { type: String, required: true },
7
- columnId: {
8
- type: mongoose.Schema.Types.ObjectId,
9
- ref: "Column",
10
- required: false,
11
- default: null,
12
- set: (v) => (v === "" ? null : v),
13
- },
14
- title: {
15
- type: String,
16
- default: "",
17
- // required: true,
18
- },
19
- description: {
20
- type: String,
21
- },
22
- priority: {
23
- type: String,
24
- enum: ["high", "medium", "low"],
25
- },
26
- typeId: [
27
- {
28
- type: mongoose.Schema.Types.ObjectId,
29
- ref: "Label",
30
- },
31
- ],
32
- type: {
33
- type: String,
34
- required: true,
35
- },
36
- assignedBy: {
37
- type: Object,
38
- },
39
- attachmentId: {
40
- type: mongoose.Schema.Types.ObjectId,
41
- ref: "Attachment",
42
- },
43
- attachments: {
44
- type: [String],
45
- default: [],
46
- },
47
- product: {
48
- type: Object,
49
- },
50
- courierId: {
51
- type: String,
52
- },
53
- orderId: {
54
- type: Object,
55
- },
56
- conversation: {
57
- type: Object,
58
- },
59
- deleted: {
60
- type: Boolean,
61
- default: false,
62
- },
63
- isExpired: {
64
- type: Boolean,
65
- default: false,
66
- },
67
- isUpdated: {
68
- type: Boolean,
69
- default: false,
70
- },
71
- completionDate: {
72
- type: String,
73
- },
74
- updatedDate: {
75
- type: Date,
76
- default: Date.now,
77
- },
78
- ticketId: {
79
- type: Number,
80
- },
81
- category: {
82
- type: String,
83
- default: "ticket",
84
- enum: ["ticket", "conversation"],
85
- },
86
- dynamicFieldValue: [
87
- {
88
- dynamicFieldId: {
89
- type: String,
90
- default: "",
91
- },
92
- fieldType: {
93
- type: String,
94
- enum: DYNAMIC_FIELD_TYPES,
95
- },
96
- fieldValueId: {
97
- type: mongoose.Schema.Types.Mixed,
98
- },
99
- },
100
- ],
101
- workspaceId: { type: String, default: "" },
102
- activities: [
103
- {
104
- data: {
105
- type: mongoose.Schema.Types.Mixed,
106
- default: {},
107
- },
108
- },
109
- ],
110
- },
111
- { timestamps: true, toJSON: { virtuals: true }, toObject: { virtuals: true } }
112
- );
113
-
114
- cardSchema.index({ workspaceId: 1, createdAt: 1 }); // Common filter
115
-
116
- // Virtual for the assignedTo user
117
- cardSchema.virtual("assignedToUser", {
118
- ref: "User",
119
- localField: "assignedTo",
120
- foreignField: "_id",
121
- });
122
-
123
- // Virtual for the attachment
124
- cardSchema.virtual("attachment", {
125
- ref: "Attachment",
126
- localField: "attachmentId",
127
- foreignField: "_id",
128
- });
129
-
130
- // Virtual for the comment
131
- cardSchema.virtual("comments", {
132
- ref: "CardComment",
133
- localField: "_id",
134
- foreignField: "cardId",
135
- });
136
-
137
- // Virtual for the assignmentList
138
- cardSchema.virtual("assignedTo", {
139
- ref: "Assignment",
140
- localField: "_id", // Change to 'cardId' to match the 'cardId' field in the Assignment model
141
- foreignField: "cardId",
142
- });
143
-
144
- module.exports = mongoose.model("Card", cardSchema);
@@ -1,33 +0,0 @@
1
- const mongoose = require("mongoose");
2
-
3
- const cardCommentSchema = new mongoose.Schema(
4
- {
5
- cardId: {
6
- type: mongoose.Schema.Types.ObjectId,
7
- ref: "Card",
8
- required: true,
9
- },
10
- commentText: {
11
- type: String,
12
- required: true,
13
- },
14
- createdBy: {
15
- type: Object,
16
- required: true,
17
- },
18
- readers: {
19
- type: [],
20
- default: [],
21
- },
22
- deleted: {
23
- type: Boolean,
24
- default: false,
25
- },
26
- updatedDate: {
27
- type: Date,
28
- },
29
- },
30
- { timestamps: true }
31
- );
32
-
33
- module.exports = mongoose.model("CardComment", cardCommentSchema);
package/models/Chatbot.js DELETED
@@ -1,16 +0,0 @@
1
- const { Schema, model } = require("mongoose");
2
- const ChatbotSchema = new Schema(
3
- {
4
- name: { type: String, default: "" },
5
- workspaceId: {
6
- type: String,
7
- default: "",
8
- },
9
- initialMessage: {
10
- type: String,
11
- default: "",
12
- },
13
- },
14
- { timestamps: true, toJSON: { virtuals: true }, toObject: { virtuals: true } }
15
- );
16
- module.exports = model("Chatbot", ChatbotSchema);
@@ -1,50 +0,0 @@
1
- const { Schema, model } = require("mongoose");
2
- const Order = require("./Order");
3
- const CheckpointSchema = new Schema(
4
- {
5
- bookingDate: { type: String, default: "" },
6
- shipperType: { type: String, default: "" },
7
- statusTime: { type: String, default: "" },
8
- orderId: { type: Schema.Types.ObjectId, default: null, ref: "Order" },
9
- statusId: { type: Schema.Types.ObjectId, default: null, ref: "Status" },
10
- statusValue: { type: String, default: "" },
11
- description: { type: String, default: "" },
12
- workspaceId: {
13
- type: Schema.Types.ObjectId,
14
- ref: "Workspace",
15
- default: null,
16
- },
17
- },
18
- { timestamps: true, toJSON: { virtuals: true }, toObject: { virtuals: true } }
19
- );
20
-
21
- const initialStatuses = {
22
- POSTEX: "departed to postex. warehouse",
23
- DAEWOO: "booking",
24
- TRAX: "shipment - arrived at origin",
25
- };
26
-
27
- CheckpointSchema.post("save", async function (doc) {
28
- try {
29
- if (
30
- doc?.shipperType &&
31
- doc?.statusValue.toLowerCase() === initialStatuses[doc?.shipperType]
32
- ) {
33
- let order = await Order.findOneAndUpdate(
34
- {
35
- _id: doc.orderId,
36
- workspaceId: doc.workspaceId,
37
- },
38
- { $set: { statusUpdatedAt: doc.bookingDate } },
39
- { new: true }
40
- );
41
- console.log(order, "initial status from shipper");
42
- }
43
- return { code: 200 };
44
- } catch (err) {
45
- console.log("err", err);
46
- return { code: 400 };
47
- }
48
- });
49
-
50
- module.exports = model("Checkpoint", CheckpointSchema);
package/models/City.js DELETED
@@ -1,17 +0,0 @@
1
- const { Schema, model } = require("mongoose");
2
-
3
- const CitySchema = new Schema(
4
- {
5
- cityName: { type: String, default: "" },
6
- correctedCityName: { type: String, default: "" },
7
- cityCode: { type: String, default: "" },
8
- area: { type: String, default: "" },
9
- shipperType: { type: String, default: "" },
10
- webCityId: { type: String, default: "" },
11
- hubId: { type: String, default: "" },
12
- body: {},
13
- },
14
- { timestamps: true, toJSON: { virtuals: true }, toObject: { virtuals: true } }
15
- );
16
-
17
- module.exports = model("City", CitySchema);
package/models/Column.js DELETED
@@ -1,28 +0,0 @@
1
- const mongoose = require("mongoose");
2
-
3
- const columnSchema = new mongoose.Schema(
4
- {
5
- title: {
6
- type: String,
7
- required: true,
8
- },
9
- position: {
10
- type: Number,
11
- required: true,
12
- },
13
- deleted: {
14
- type: Boolean,
15
- default: false,
16
- },
17
- workspaceId: { type: String, default: "" },
18
- },
19
- { timestamps: true, toJSON: { virtuals: true }, toObject: { virtuals: true } }
20
- );
21
-
22
- columnSchema.virtual("cardList", {
23
- ref: "Card",
24
- localField: "_id", // Change to '_id' to match the column's '_id'
25
- foreignField: "columnId",
26
- });
27
-
28
- module.exports = mongoose.model("Column", columnSchema);
@@ -1,84 +0,0 @@
1
- const mongoose = require("mongoose");
2
- const { Schema } = mongoose;
3
-
4
- const draftSchema = new mongoose.Schema({
5
- _id: {
6
- type: Schema.Types.ObjectId,
7
- default: () => new mongoose.Types.ObjectId(),
8
- },
9
- messageBody: {},
10
- createdBy: { type: Schema.Types.ObjectId, ref: "User" },
11
- });
12
-
13
- const conversationSchema = new mongoose.Schema(
14
- {
15
- platformType: {
16
- type: String,
17
- enum: [
18
- "gmail",
19
- "instagram",
20
- "whatsapp",
21
- "linkedin",
22
- "facebook",
23
- "tiktok",
24
- "webChat",
25
- "smtp_gmail",
26
- ],
27
- required: true,
28
- },
29
- members: [{ type: Schema.Types.ObjectId, ref: "User" }],
30
- conversationType: {
31
- type: String,
32
- enum: ["comment", "message", "email"],
33
- required: true,
34
- },
35
- messageCount: { type: Number, default: 0 },
36
- conversationStatus: {
37
- type: String,
38
- enum: ["assigned", "unassigned", "archived"],
39
- required: true,
40
- default: "unassigned",
41
- },
42
- assignId: { type: Schema.Types.ObjectId, ref: "User", default: null },
43
- platformId: {
44
- type: Schema.Types.ObjectId,
45
- ref: "Integration",
46
- default: null,
47
- },
48
- labels: [{ type: Schema.Types.ObjectId, ref: "Label" }],
49
- title: { type: String },
50
- platformTimestamp: { type: String, default: "" },
51
- status: {
52
- type: String,
53
- enum: ["open", "processing", "hold", "closed"],
54
- required: true,
55
- default: "open",
56
- },
57
- isSpam: { type: Boolean, default: false },
58
- threadId: { type: String, default: "" },
59
- messageId: { type: String, default: "" },
60
- profileId: { type: Schema.Types.ObjectId, ref: "Profile" },
61
- conversationCloseTime: { type: String },
62
- workspaceId: { type: Schema.Types.ObjectId, ref: "Workspace" },
63
- postId: { type: String, default: "" },
64
- postUrl: { type: String, default: "" },
65
- sender: { type: String, default: "" },
66
- reasonForClosing: {
67
- reason: { type: String, default: "" },
68
- closedBy: { type: Schema.Types.ObjectId, ref: "User", default: null },
69
- },
70
- integratedAccount: { type: String, default: "" },
71
- isRead: { type: Boolean, default: false },
72
- ticketId: { type: String, default: "" },
73
- draft: [draftSchema],
74
- isWebchatTicket: { type: Boolean, default: false },
75
- webchatComplaintType: { type: String, default: null },
76
- isComposed: { type: Boolean, default: false },
77
- utilityMessage: [],
78
- orderId: [],
79
- isFetch: { type: Boolean, default: true },
80
- },
81
- { timestamps: true, toJSON: { virtuals: true }, toObject: { virtuals: true } }
82
- );
83
-
84
- module.exports = mongoose.model("Conversation", conversationSchema);
@@ -1,35 +0,0 @@
1
- const mongoose = require("mongoose");
2
- const { Schema } = mongoose;
3
-
4
- const CustomerSchema = new Schema(
5
- {
6
- name: { type: String, default: "" },
7
- email: { type: String, default: "" },
8
- phone: { type: String, default: "" },
9
- city: { type: String, default: "" },
10
- defaultAddress: { type: String, default: "" },
11
- currentShippingAddress: {},
12
- addresses: [],
13
- workspaceId: {
14
- type: Schema.Types.ObjectId,
15
- ref: "Workspace",
16
- default: null,
17
- },
18
- phone1: { type: String, default: "" },
19
- isBlackListed: { type: Boolean, default: false },
20
- createdBy: {
21
- type: Schema.Types.ObjectId,
22
- ref: "User",
23
- },
24
- updatedBy: {
25
- type: Schema.Types.ObjectId,
26
- ref: "User",
27
- },
28
- isDeleted: { type: Boolean, default: false },
29
- },
30
- { timestamps: true, toJSON: { virtuals: true }, toObject: { virtuals: true } }
31
- );
32
-
33
- const Customer = mongoose.model("Customer", CustomerSchema);
34
-
35
- module.exports = Customer;
@@ -1,22 +0,0 @@
1
- const mongoose = require("mongoose");
2
- const { Schema } = mongoose;
3
- const DescriptionTemplateSchema = new Schema(
4
- {
5
- name: { type: String, default: "" },
6
- subject: { type: String, default: "" },
7
- format: { type: String, default: "" },
8
- workspaceId: { type: String, default: "" },
9
- businessId: { type: String, default: "" },
10
- integrationId: { type: String, default: "" },
11
- type: { type: String, default: "" },
12
- body: {},
13
- arbitraryValues: {},
14
- moduleType: { type: String, default: "" },
15
- },
16
- { timestamps: true, toJSON: { virtuals: true }, toObject: { virtuals: true } }
17
- );
18
- const DescriptionTemplate =
19
- mongoose.models.DescriptionTemplate ||
20
- mongoose.model("DescriptionTemplate", DescriptionTemplateSchema);
21
-
22
- module.exports = DescriptionTemplate;