@openinc/parse-server-opendash 2.4.80 → 2.4.82
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.
|
@@ -76,9 +76,7 @@ async function handleRequest(request) {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
async function getTicketData(tickets) {
|
|
79
|
-
const ticketIds = tickets.map((ticket) => ticket.id);
|
|
80
|
-
// get assigned users and roles
|
|
81
|
-
console.log("fetching assigned users and roles");
|
|
79
|
+
// const ticketIds = tickets.map((ticket) => ticket.id);
|
|
82
80
|
const ticketDataPromises = tickets.map(async (ticket) => {
|
|
83
81
|
let assignedusers = [];
|
|
84
82
|
let assignedroles = [];
|
|
@@ -92,137 +90,220 @@ async function getTicketData(tickets) {
|
|
|
92
90
|
.query()
|
|
93
91
|
.find({ useMasterKey: true });
|
|
94
92
|
}
|
|
93
|
+
const downtimes = await getDowntime(ticket);
|
|
94
|
+
const duedate = await getDueDate(ticket);
|
|
95
|
+
const frequency = await getFrequency(ticket);
|
|
96
|
+
const restriction = await getRestriction(ticket);
|
|
97
|
+
const issuecategory = await getIssueCategory(ticket);
|
|
98
|
+
const priority = await getPriority(ticket);
|
|
99
|
+
const source = await getTicketSource(ticket);
|
|
100
|
+
const state = await getState(ticket);
|
|
101
|
+
const dailySchedule = await getDailySchedule(ticket);
|
|
102
|
+
const messages = await getMessages(ticket);
|
|
95
103
|
return {
|
|
96
104
|
ticket: ticket,
|
|
105
|
+
downtime: downtimes.length > 0 ? downtimes[0] : undefined,
|
|
106
|
+
duedate: duedate.length > 0 ? duedate[0] : undefined,
|
|
107
|
+
issuecategory: issuecategory.length > 0
|
|
108
|
+
? issuecategory[0]?.get("issuecategory")
|
|
109
|
+
: undefined,
|
|
110
|
+
frequency: frequency.length > 0 ? frequency[0] : undefined,
|
|
111
|
+
restriction: restriction.length > 0 ? restriction[0] : undefined,
|
|
112
|
+
priority: priority.length > 0 ? priority[0] : undefined,
|
|
113
|
+
source: source.length > 0 ? source[0]?.get("source") : undefined,
|
|
114
|
+
state: state.length > 0 ? state[0]?.get("state") : undefined,
|
|
115
|
+
messages: messages.messages,
|
|
116
|
+
messageBodies: messages.messageBodies,
|
|
117
|
+
dailySchedule: dailySchedule,
|
|
97
118
|
assignedTo: [...assignedusers, ...assignedroles],
|
|
98
119
|
};
|
|
99
120
|
});
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
121
|
+
return await Promise.all(ticketDataPromises);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Fetches the downtime for a ticket
|
|
125
|
+
* @param ticket
|
|
126
|
+
* @param ticketIds
|
|
127
|
+
* @returns
|
|
128
|
+
*/
|
|
129
|
+
async function getDowntime(ticket) {
|
|
130
|
+
return await new Parse.Query(types_1.Maintenance_Downtime)
|
|
131
|
+
.descending("updatedAt")
|
|
132
|
+
.equalTo("ticket", ticket)
|
|
133
|
+
// .containedIn("ticket", ticketIds)
|
|
134
|
+
// .limit(1_000_000)
|
|
107
135
|
.find({ useMasterKey: true });
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
data.dailySchedule = scheduleTicket.schedule;
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
// fetch downtime
|
|
124
|
-
console.log("fetching downtime");
|
|
125
|
-
const downtimes = await new Parse.Query(types_1.Maintenance_Downtime)
|
|
136
|
+
// .filter((downtime) => downtime.get("ticket").id === ticket.id, {
|
|
137
|
+
// useMasterKey: true,
|
|
138
|
+
// });
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Fetches the duedate for a ticket
|
|
142
|
+
* @param ticket
|
|
143
|
+
* @param ticketIds
|
|
144
|
+
* @returns
|
|
145
|
+
*/
|
|
146
|
+
async function getDueDate(ticket) {
|
|
147
|
+
return await new Parse.Query(types_1.Maintenance_Duedate)
|
|
126
148
|
.descending("updatedAt")
|
|
127
|
-
.
|
|
128
|
-
.
|
|
149
|
+
.equalTo("ticket", ticket)
|
|
150
|
+
// .containedIn("ticket", ticketIds)
|
|
151
|
+
// .limit(1_000_000)
|
|
129
152
|
.find({ useMasterKey: true });
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
153
|
+
// .filter((duedate) => duedate.get("ticket").id === ticket.id, {
|
|
154
|
+
// useMasterKey: true,
|
|
155
|
+
// });
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Fetches the frequency for a ticket
|
|
159
|
+
* @param ticket
|
|
160
|
+
* @param ticketIds
|
|
161
|
+
*/
|
|
162
|
+
async function getFrequency(ticket) {
|
|
163
|
+
return await new Parse.Query(types_1.Maintenance_Frequency)
|
|
136
164
|
.descending("updatedAt")
|
|
137
|
-
.
|
|
138
|
-
.
|
|
165
|
+
.equalTo("ticket", ticket)
|
|
166
|
+
// .containedIn("ticket", ticketIds)
|
|
167
|
+
// .limit(1_000_000)
|
|
139
168
|
.find({ useMasterKey: true });
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
169
|
+
// .filter((frequency) => frequency.get("ticket").id === ticket.id, {
|
|
170
|
+
// useMasterKey: true,
|
|
171
|
+
// });
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Fetches the restriction for a ticket
|
|
175
|
+
* @param ticket
|
|
176
|
+
* @param ticketIds
|
|
177
|
+
*/
|
|
178
|
+
async function getRestriction(ticket) {
|
|
179
|
+
return await new Parse.Query(types_1.Maintenance_Restriction)
|
|
146
180
|
.descending("updatedAt")
|
|
147
|
-
.
|
|
148
|
-
.
|
|
181
|
+
.equalTo("ticket", ticket)
|
|
182
|
+
// .containedIn("ticket", ticketIds)
|
|
183
|
+
// .limit(1_000_000)
|
|
149
184
|
.find({ useMasterKey: true });
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
185
|
+
// .filter((restriction) => restriction.get("ticket").id === ticket.id, {
|
|
186
|
+
// useMasterKey: true,
|
|
187
|
+
// });
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Fetches the priority for a ticket
|
|
191
|
+
* @param ticket
|
|
192
|
+
* @param ticketIds
|
|
193
|
+
* @returns
|
|
194
|
+
*/
|
|
195
|
+
async function getPriority(ticket) {
|
|
196
|
+
return await new Parse.Query(types_1.Maintenance_Priority)
|
|
157
197
|
.descending("updatedAt")
|
|
158
|
-
.
|
|
159
|
-
.
|
|
198
|
+
.equalTo("ticket", ticket)
|
|
199
|
+
// .containedIn("ticket", ticketIds)
|
|
200
|
+
// .limit(1_000_000)
|
|
201
|
+
.equalTo("ticket", ticket)
|
|
160
202
|
.find({ useMasterKey: true });
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
203
|
+
// .filter((priority) => priority.get("ticket").id === ticket.id, {
|
|
204
|
+
// useMasterKey: true,
|
|
205
|
+
// });
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Fetches the state for a ticket
|
|
209
|
+
* @param ticket
|
|
210
|
+
* @param ticketIds
|
|
211
|
+
*/
|
|
212
|
+
async function getState(ticket) {
|
|
213
|
+
return await new Parse.Query(types_1.Maintenance_Ticket_Kanban_State_Current)
|
|
169
214
|
.descending("updatedAt")
|
|
170
215
|
.includeAll()
|
|
171
|
-
.matchesQuery("ticket", new Parse.Query(types_1.Maintenance_Ticket).
|
|
172
|
-
|
|
216
|
+
.matchesQuery("ticket", new Parse.Query(types_1.Maintenance_Ticket).equalTo("objectId", ticket.id)
|
|
217
|
+
// .containedIn("objectId", ticketIds)
|
|
218
|
+
)
|
|
219
|
+
// .limit(1_000_000)
|
|
173
220
|
.find({ useMasterKey: true });
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
|
|
221
|
+
// .filter((ts) => ts.get("ticket")?.id === ticket.id, {
|
|
222
|
+
// useMasterKey: true,
|
|
223
|
+
// });
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Fetches the messages for a ticket
|
|
227
|
+
* @param ticket
|
|
228
|
+
* @param ticketIds
|
|
229
|
+
*/
|
|
230
|
+
async function getMessages(ticket) {
|
|
179
231
|
const messageBodies = await new Parse.Query(types_1.Maintenance_Message_Body)
|
|
180
232
|
.include("message")
|
|
181
233
|
.matchesQuery("message", new Parse.Query(types_1.Maintenance_Message)
|
|
182
234
|
.descending("updatedAt")
|
|
183
|
-
.
|
|
184
|
-
|
|
235
|
+
.equalTo("referencedObjectId", ticket.id)
|
|
236
|
+
// .containedIn("referencedObjectId", ticketIds)
|
|
237
|
+
// .limit(1_000_000)
|
|
238
|
+
)
|
|
185
239
|
.limit(1000000)
|
|
186
240
|
.find({ useMasterKey: true });
|
|
187
241
|
const messages = messageBodies
|
|
188
242
|
.map((msgB) => msgB.message)
|
|
189
243
|
.filter((msg) => !!msg);
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
// fetch restriction
|
|
205
|
-
console.log("fetching restriction");
|
|
206
|
-
const restrictions = await new Parse.Query(types_1.Maintenance_Restriction)
|
|
244
|
+
return {
|
|
245
|
+
messages: messages.filter((msg) => msg?.get("referencedObjectId") === ticket.id),
|
|
246
|
+
messageBodies: messageBodies.filter((msgB) => messages?.some((msg) => msg.id === msgB.get("message")?.id)),
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Fetches the issuecategory for a ticket
|
|
251
|
+
* @param ticket
|
|
252
|
+
* @param ticketIds
|
|
253
|
+
* @returns
|
|
254
|
+
*/
|
|
255
|
+
async function getIssueCategory(ticket) {
|
|
256
|
+
return await new Parse.Query(types_1.Maintenance_Ticket_Issuecategory)
|
|
257
|
+
.includeAll()
|
|
207
258
|
.descending("updatedAt")
|
|
208
|
-
.
|
|
209
|
-
.
|
|
259
|
+
.equalTo("ticket", ticket)
|
|
260
|
+
// .containedIn("ticket", ticketIds)
|
|
261
|
+
// .limit(1_000_000)
|
|
210
262
|
.find({ useMasterKey: true });
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
263
|
+
// .filter((issuecategory) => issuecategory.get("ticket").id === ticket.id, {
|
|
264
|
+
// useMasterKey: true,
|
|
265
|
+
// });
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Fetches the source for a ticket
|
|
269
|
+
* @param ticket
|
|
270
|
+
* @param ticketIds
|
|
271
|
+
*/
|
|
272
|
+
async function getTicketSource(ticket) {
|
|
273
|
+
return await new Parse.Query(types_1.Maintenance_Ticket_Source)
|
|
217
274
|
.includeAll()
|
|
218
275
|
.descending("updatedAt")
|
|
219
|
-
.
|
|
276
|
+
.equalTo("ticket", ticket)
|
|
277
|
+
// .containedIn("ticket", ticketIds)
|
|
278
|
+
// .limit(1_000_000)
|
|
279
|
+
.find({ useMasterKey: true });
|
|
280
|
+
// .filter((source) => source.get("ticket").id === ticket.id, {
|
|
281
|
+
// useMasterKey: true,
|
|
282
|
+
// });
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Fetches the daily schedule for a ticket
|
|
286
|
+
* @param ticket
|
|
287
|
+
* @param ticketIds
|
|
288
|
+
*/
|
|
289
|
+
async function getDailySchedule(ticket) {
|
|
290
|
+
const schedules = await new Parse.Query(types_1.Maintenance_DailySchedule)
|
|
291
|
+
.include("tickets")
|
|
292
|
+
.matchesQuery("tickets", new Parse.Query(types_1.Maintenance_DailySchedule).matchesQuery("tickets", new Parse.Query(types_1.Maintenance_Ticket).equalTo("objectId", ticket.id)
|
|
293
|
+
// .containedIn("objectId", ticketIds)
|
|
294
|
+
))
|
|
220
295
|
.limit(1000000)
|
|
221
296
|
.find({ useMasterKey: true });
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
297
|
+
const scheduleTickets = await Promise.all(schedules.map(async (schedule) => {
|
|
298
|
+
return {
|
|
299
|
+
schedule,
|
|
300
|
+
tickets: await schedule
|
|
301
|
+
.get("tickets")
|
|
302
|
+
.query()
|
|
303
|
+
.find({ useMasterKey: true }),
|
|
304
|
+
};
|
|
305
|
+
}));
|
|
306
|
+
return scheduleTickets.find((scheduleTicket) => scheduleTicket.tickets.some((ticket) => ticket.id === ticket.id))?.schedule;
|
|
226
307
|
}
|
|
227
308
|
/**
|
|
228
309
|
* Used to filter tickets based on the filterBy attribute
|
|
@@ -243,11 +324,6 @@ const filterQueryMap = {
|
|
|
243
324
|
.includeAll()
|
|
244
325
|
.find({ useMasterKey: true });
|
|
245
326
|
const filteredTicketSources = arrayToDistinct(allTicketSources, (ts) => ts.get("ticket").id, (ts) => ts.get("source").id === value);
|
|
246
|
-
console.log("filtered Array", filteredTicketSources.map((ts) => ts.get("ticket").title +
|
|
247
|
-
" - " +
|
|
248
|
-
ts.get("source").name +
|
|
249
|
-
" - " +
|
|
250
|
-
ts.get("source").id));
|
|
251
327
|
// @ts-ignore
|
|
252
328
|
query.containedIn("objectId", filteredTicketSources.map((ts) => ts.get("ticket").id));
|
|
253
329
|
},
|
|
@@ -285,11 +361,6 @@ const filterQueryMap = {
|
|
|
285
361
|
* @returns an array with distinct values based on the getId function
|
|
286
362
|
*/
|
|
287
363
|
function arrayToDistinct(arr, getId, filter) {
|
|
288
|
-
console.log("Whole Array", arr.map((ts) => ts.get("ticket").title +
|
|
289
|
-
" - " +
|
|
290
|
-
ts.get("source").name +
|
|
291
|
-
" - " +
|
|
292
|
-
ts.get("source").id));
|
|
293
364
|
const map = new Map();
|
|
294
365
|
arr.forEach((item) => {
|
|
295
366
|
if (map.has(getId(item)))
|
|
@@ -297,11 +368,6 @@ function arrayToDistinct(arr, getId, filter) {
|
|
|
297
368
|
map.set(getId(item), item);
|
|
298
369
|
});
|
|
299
370
|
const array = Array.from(map.values());
|
|
300
|
-
console.log("Distinct Array", array.map((ts) => ts.get("ticket").title +
|
|
301
|
-
" - " +
|
|
302
|
-
ts.get("source").name +
|
|
303
|
-
" - " +
|
|
304
|
-
ts.get("source").id));
|
|
305
371
|
return filter ? array.filter(filter) : array;
|
|
306
372
|
}
|
|
307
373
|
function findSortByValue(sortBy, obj) {
|