@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
- 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)
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
- 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
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
- .containedIn("ticket", ticketIds)
128
- .limit(1000000)
149
+ .equalTo("ticket", ticket)
150
+ // .containedIn("ticket", ticketIds)
151
+ // .limit(1_000_000)
129
152
  .find({ useMasterKey: true });
130
- ticketData.forEach((data) => {
131
- data.downtime = downtimes.find((downtime) => downtime.get("ticket").id === data.ticket.id);
132
- });
133
- // fetch duedate
134
- console.log("fetching duedate");
135
- const duedates = await new Parse.Query(types_1.Maintenance_Duedate)
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
- .containedIn("ticket", ticketIds)
138
- .limit(1000000)
165
+ .equalTo("ticket", ticket)
166
+ // .containedIn("ticket", ticketIds)
167
+ // .limit(1_000_000)
139
168
  .find({ useMasterKey: true });
140
- ticketData.forEach((data) => {
141
- data.duedate = duedates.find((duedate) => duedate.get("ticket").id === data.ticket.id);
142
- });
143
- // fetch frequency
144
- console.log("fetching frequency");
145
- const frequencies = await new Parse.Query(types_1.Maintenance_Frequency)
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
- .containedIn("ticket", ticketIds)
148
- .limit(1000000)
181
+ .equalTo("ticket", ticket)
182
+ // .containedIn("ticket", ticketIds)
183
+ // .limit(1_000_000)
149
184
  .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()
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
- .containedIn("ticket", ticketIds)
159
- .limit(1000000)
198
+ .equalTo("ticket", ticket)
199
+ // .containedIn("ticket", ticketIds)
200
+ // .limit(1_000_000)
201
+ .equalTo("ticket", ticket)
160
202
  .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
167
- console.log("fetching state");
168
- const ticketStates = await new Parse.Query(types_1.Maintenance_Ticket_Kanban_State_Current)
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).containedIn("objectId", ticketIds))
172
- .limit(1000000)
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
- ticketData.forEach((data) => {
175
- data.state = ticketStates.find((ts) => ts.get("ticket")?.id === data.ticket.id)?.state;
176
- });
177
- // fetch messages
178
- console.log("fetching messages");
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
- .containedIn("referencedObjectId", ticketIds)
184
- .limit(1000000))
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
- 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)
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
- .containedIn("ticket", ticketIds)
209
- .limit(1000000)
259
+ .equalTo("ticket", ticket)
260
+ // .containedIn("ticket", ticketIds)
261
+ // .limit(1_000_000)
210
262
  .find({ useMasterKey: true });
211
- ticketData.forEach((data) => {
212
- data.restriction = restrictions.find((restriction) => restriction.get("ticket").id === data.ticket.id);
213
- });
214
- // fetch source
215
- console.log("fetching source");
216
- const sources = await new Parse.Query(types_1.Maintenance_Ticket_Source)
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
- .containedIn("ticket", ticketIds)
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
- ticketData.forEach((data) => {
223
- data.source = sources.find((source) => source.get("ticket").id === data.ticket.id)?.source;
224
- });
225
- return ticketData;
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) {
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.82",
4
4
  "description": "Parse Server Cloud Code for open.DASH",
5
5
  "keywords": [
6
6
  "parse",