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