@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
- const ticketData = await Promise.all(ticketDataPromises);
101
- // fetch daily schedule
102
- console.log("fetching daily schedule");
103
- const schedules = await new Parse.Query(types_1.Maintenance_DailySchedule)
104
- .include("tickets")
105
- .matchesQuery("tickets", new Parse.Query(types_1.Maintenance_DailySchedule).matchesQuery("tickets", new Parse.Query(types_1.Maintenance_Ticket).containedIn("objectId", ticketIds)))
106
- .limit(1000000)
107
- .find({ useMasterKey: true });
108
- const scheduleTickets = await Promise.all(schedules.map(async (schedule) => {
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
- const downtimes = await new Parse.Query(types_1.Maintenance_Downtime)
133
+ return await new Parse.Query(types_1.Maintenance_Downtime)
126
134
  .descending("updatedAt")
127
- .containedIn("ticket", ticketIds)
135
+ .equalTo("ticket", ticket)
136
+ // .containedIn("ticket", ticketIds)
128
137
  .limit(1000000)
129
138
  .find({ useMasterKey: true });
130
- ticketData.forEach((data) => {
131
- data.downtime = downtimes.find((downtime) => downtime.get("ticket").id === data.ticket.id);
132
- });
133
- // fetch duedate
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
- const duedates = await new Parse.Query(types_1.Maintenance_Duedate)
151
+ return await new Parse.Query(types_1.Maintenance_Duedate)
136
152
  .descending("updatedAt")
137
- .containedIn("ticket", ticketIds)
153
+ .equalTo("ticket", ticket)
154
+ // .containedIn("ticket", ticketIds)
138
155
  .limit(1000000)
139
156
  .find({ useMasterKey: true });
140
- ticketData.forEach((data) => {
141
- data.duedate = duedates.find((duedate) => duedate.get("ticket").id === data.ticket.id);
142
- });
143
- // fetch frequency
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
- const frequencies = await new Parse.Query(types_1.Maintenance_Frequency)
168
+ return await new Parse.Query(types_1.Maintenance_Frequency)
146
169
  .descending("updatedAt")
147
- .containedIn("ticket", ticketIds)
170
+ .equalTo("ticket", ticket)
171
+ // .containedIn("ticket", ticketIds)
148
172
  .limit(1000000)
149
173
  .find({ useMasterKey: true });
150
- ticketData.forEach((data) => {
151
- data.frequency = frequencies.find((frequency) => frequency.get("ticket").id === data.ticket.id);
152
- });
153
- // fetch issuecategory
154
- console.log("fetching issuecategory");
155
- const issuecategories = await new Parse.Query(types_1.Maintenance_Ticket_Issuecategory)
156
- .includeAll()
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
- .containedIn("ticket", ticketIds)
187
+ .equalTo("ticket", ticket)
188
+ // .containedIn("ticket", ticketIds)
159
189
  .limit(1000000)
160
190
  .find({ useMasterKey: true });
161
- ticketData.forEach((data) => {
162
- data.issuecategory = issuecategories
163
- .find((issuecategory) => issuecategory.get("ticket").id === data.ticket.id)
164
- ?.get("issuecategory");
165
- });
166
- // fetch state
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
- const ticketStates = await new Parse.Query(types_1.Maintenance_Ticket_Kanban_State_Current)
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).containedIn("objectId", ticketIds))
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
- ticketData.forEach((data) => {
175
- data.state = ticketStates.find((ts) => ts.get("ticket")?.id === data.ticket.id)?.state;
176
- });
177
- // fetch messages
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
- .containedIn("referencedObjectId", ticketIds)
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
- ticketData.forEach((data) => {
191
- data.messages = messages.filter((msg) => msg?.get("referencedObjectId") === data.ticket.id);
192
- data.messageBodies = messageBodies.filter((msgB) => data.messages?.some((msg) => msg.id === msgB.get("message")?.id));
193
- });
194
- // fetch priority
195
- console.log("fetching priority");
196
- const priorities = await new Parse.Query(types_1.Maintenance_Priority)
197
- .descending("updatedAt")
198
- .containedIn("ticket", ticketIds)
199
- .limit(1000000)
200
- .find({ useMasterKey: true });
201
- ticketData.forEach((data) => {
202
- data.priority = priorities.find((priority) => priority.get("ticket").id === data.ticket.id);
203
- });
204
- // fetch restriction
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
- .containedIn("ticket", ticketIds)
268
+ .equalTo("ticket", ticket)
269
+ // .containedIn("ticket", ticketIds)
209
270
  .limit(1000000)
210
271
  .find({ useMasterKey: true });
211
- ticketData.forEach((data) => {
212
- data.restriction = restrictions.find((restriction) => restriction.get("ticket").id === data.ticket.id);
213
- });
214
- // fetch source
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
- const sources = await new Parse.Query(types_1.Maintenance_Ticket_Source)
283
+ return await new Parse.Query(types_1.Maintenance_Ticket_Source)
217
284
  .includeAll()
218
285
  .descending("updatedAt")
219
- .containedIn("ticket", ticketIds)
286
+ .equalTo("ticket", ticket)
287
+ // .containedIn("ticket", ticketIds)
220
288
  .limit(1000000)
221
289
  .find({ useMasterKey: true });
222
- ticketData.forEach((data) => {
223
- data.source = sources.find((source) => source.get("ticket").id === data.ticket.id)?.source;
224
- });
225
- return ticketData;
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "2.4.80",
3
+ "version": "2.4.81",
4
4
  "description": "Parse Server Cloud Code for open.DASH",
5
5
  "keywords": [
6
6
  "parse",