@openinc/parse-server-opendash 2.4.95 → 2.4.99

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 (33) hide show
  1. package/dist/app_types/CRON_Types.d.ts +10 -0
  2. package/dist/app_types/CRON_Types.js +2 -0
  3. package/dist/config.js +9 -0
  4. package/dist/featuremap.json +1 -0
  5. package/dist/functions/openinc-openservice-save-ticket-data.d.ts +4 -0
  6. package/dist/functions/openinc-openservice-save-ticket-data.js +47 -8
  7. package/dist/functions/openinc-openservice-ticket-data.d.ts +7 -0
  8. package/dist/functions/openinc-openservice-ticket-data.js +2 -1
  9. package/dist/helper/TranslationKeys.d.ts +82 -0
  10. package/dist/helper/TranslationKeys.js +86 -0
  11. package/dist/hooks/Maintenance_Downtime.js +39 -2
  12. package/dist/hooks/Maintenance_Duedate.js +47 -2
  13. package/dist/hooks/Maintenance_Frequency.js +39 -2
  14. package/dist/hooks/Maintenance_Message.js +429 -1
  15. package/dist/hooks/Maintenance_Priority.js +39 -2
  16. package/dist/hooks/Maintenance_Restriction.js +39 -2
  17. package/dist/hooks/Maintenance_Schedule_Execution.js +36 -0
  18. package/dist/hooks/Maintenance_Schedule_Template.js +66 -23
  19. package/dist/hooks/Maintenance_Ticket_Issuecategory.js +40 -2
  20. package/dist/hooks/Maintenance_Ticket_Kanban_State.js +39 -2
  21. package/dist/hooks/Maintenance_Ticket_Source.js +55 -6
  22. package/dist/hooks/Maintenance_Ticket_Title.js +39 -2
  23. package/dist/hooks/Monitoring_Jobs.js +1 -1
  24. package/dist/index.js +3 -1
  25. package/dist/types/ML_DataSelection.d.ts +16 -0
  26. package/dist/types/ML_DataSelection.js +23 -0
  27. package/dist/types/Monitoring_Jobs.d.ts +8 -3
  28. package/dist/types/Monitoring_Jobs.js +6 -0
  29. package/dist/types/index.d.ts +2 -0
  30. package/dist/types/index.js +4 -2
  31. package/package.json +1 -1
  32. package/schema/ML_DataSelection.json +38 -0
  33. package/schema/Monitoring_Jobs.json +8 -1
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.init = init;
4
4
  exports.removeLatestMessage = removeLatestMessage;
5
5
  const __1 = require("..");
6
+ const openinc_openservice_save_ticket_data_1 = require("../functions/openinc-openservice-save-ticket-data");
7
+ const TranslationKeys_1 = require("../helper/TranslationKeys");
6
8
  const types_1 = require("../types");
7
9
  async function init() {
8
10
  //Check each object if displayAt is set, if not, set it to createdAt
9
- await new Parse.Query(types_1.Maintenance_Message.className).each(async (message) => {
11
+ await new Parse.Query(types_1.Maintenance_Message).each(async (message) => {
10
12
  if (!message.get("displayAt")) {
11
13
  message.set("displayAt", message.get("createdAt"));
12
14
  await message.save(null, { useMasterKey: true });
@@ -41,6 +43,7 @@ async function init() {
41
43
  (0, __1.afterSaveHook)(types_1.Maintenance_Message, async (request) => {
42
44
  const { object, original, user, master } = request;
43
45
  });
46
+ await initializeMessages();
44
47
  }
45
48
  /**
46
49
  * Removes the latest message. as context the title and content are used (should be translation strings)
@@ -62,3 +65,428 @@ async function removeLatestMessage(entry, title, content) {
62
65
  }
63
66
  return false;
64
67
  }
68
+ /**
69
+ * Initializes the messages if there are no messages in the database
70
+ */
71
+ async function initializeMessages() {
72
+ const count = await new Parse.Query(types_1.Maintenance_Message)
73
+ // we only handle system messages, not user messages
74
+ // @ts-ignore
75
+ .equalTo("data.type", "system")
76
+ .count({
77
+ useMasterKey: true,
78
+ });
79
+ if (count !== 0)
80
+ return;
81
+ console.log("=================================");
82
+ console.log("Initializing maintenance messages");
83
+ console.log("=================================");
84
+ await convertTicketDataToMessages();
85
+ await convertScheduleExecutionToMessage();
86
+ console.log("=================================");
87
+ console.log("Initializing messages is finished");
88
+ console.log("=================================");
89
+ }
90
+ async function convertTicketDataToMessages() {
91
+ // we get all ticket sources and convert them to messages
92
+ // important for the machinelog is, that all other ticket data should be converted to messages
93
+ // pointing to the source that was assigned to the ticket at that time
94
+ const ticketSources = await new Parse.Query(types_1.Maintenance_Ticket_Source)
95
+ .limit(1000000)
96
+ .includeAll()
97
+ .ascending("createdAt")
98
+ .find({ useMasterKey: true });
99
+ // we create the sources as messages and save them
100
+ // we also create a time frame for the sources in wich that source was assigned to the ticket
101
+ const timeMap = convertSourcesToTimeMap(ticketSources);
102
+ // we handle source different than the other data
103
+ // we need to create a message for the source that was assigned to the ticket and already fetched the sources here
104
+ await convertSourcesToMessages(ticketSources);
105
+ await ticketStateToMessage(timeMap);
106
+ await ticketIssuecategoryToMessage(timeMap);
107
+ await ticketPriorityToMessage(timeMap);
108
+ await ticketRestrictionToMessage(timeMap);
109
+ await ticketDowntimeToMessage(timeMap);
110
+ await ticketFrequencyToMessage(timeMap);
111
+ await ticketDuedateToMessage(timeMap);
112
+ await ticketTitleToMessage(timeMap);
113
+ }
114
+ async function convertToMessage(config) {
115
+ const entries = await new Parse.Query(config.className)
116
+ .limit(1000000)
117
+ .includeAll()
118
+ .ascending("createdAt")
119
+ .find({ useMasterKey: true });
120
+ const messages = [];
121
+ for (const index in entries) {
122
+ const entry = entries[index];
123
+ const previous = entries[Number.parseInt(index) - 1];
124
+ // check if ticket entry is valid, might be corrupted
125
+ if (!config.isValueValid(entry) ||
126
+ !entry.get("ticket") ||
127
+ (previous && (!config.isValueValid(previous) || !previous.get("ticket"))))
128
+ continue;
129
+ const source = getSourceForTime(config.timeMap, entry.get("ticket").id, entry.get("createdAt"));
130
+ const message = new types_1.Maintenance_Message({
131
+ title: config.ticketTranslation.TITLE,
132
+ content: config.ticketTranslation.CONTENT,
133
+ referencedObjectId: entry.get("ticket").id,
134
+ classname: entry.get("ticket").className,
135
+ displayAt: entry.get("createdAt"),
136
+ data: {
137
+ type: "system",
138
+ origin: {
139
+ id: entry.id,
140
+ classname: entry.className,
141
+ },
142
+ translation: {
143
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(entry.get("user")),
144
+ ticketName: entry.get("ticket").get("title"),
145
+ ...config.getTranslationData(entry, previous),
146
+ },
147
+ },
148
+ user: entry.get("user"),
149
+ tenant: entry.get("tenant"),
150
+ });
151
+ messages.push(message);
152
+ if (source) {
153
+ const machinelogMessage = new types_1.Maintenance_Message({
154
+ title: config.machinelogTranslation.TITLE,
155
+ content: config.machinelogTranslation.CONTENT,
156
+ referencedObjectId: source.id,
157
+ classname: source.className,
158
+ displayAt: entry.get("createdAt"),
159
+ data: {
160
+ type: "system",
161
+ origin: {
162
+ id: entry.get("ticket").id,
163
+ classname: entry.get("ticket").className,
164
+ },
165
+ translation: {
166
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(entry.get("user")),
167
+ ticketName: entry.get("ticket").get("title"),
168
+ ...config.getTranslationData(entry),
169
+ },
170
+ },
171
+ user: entry.get("user"),
172
+ tenant: entry.get("tenant"),
173
+ });
174
+ messages.push(machinelogMessage);
175
+ }
176
+ }
177
+ await types_1.Maintenance_Message.saveAll(messages, { useMasterKey: true });
178
+ }
179
+ /**
180
+ * Creates a time map from the given ticket sources wich maps the ticket id to the different sources and their createdAt dates
181
+ * @param ticketSources the ticket sources from wich the time map sould be created
182
+ * @returns a map with the ticket id as key and the different sources and their createdAt dates as value
183
+ */
184
+ function convertSourcesToTimeMap(ticketSources) {
185
+ // we create a map with the ticket id as key and the different createdAt dates as value
186
+ const timeFrameMap = new Map();
187
+ for (const ticketSource of ticketSources) {
188
+ const ticketId = ticketSource.get("ticket").id;
189
+ if (!timeFrameMap.has(ticketId)) {
190
+ timeFrameMap.set(ticketId, [
191
+ {
192
+ source: ticketSource.get("source"),
193
+ date: ticketSource.get("createdAt"),
194
+ },
195
+ ]);
196
+ }
197
+ else {
198
+ timeFrameMap.get(ticketId).push({
199
+ source: ticketSource.get("source"),
200
+ date: ticketSource.get("createdAt"),
201
+ });
202
+ }
203
+ }
204
+ return timeFrameMap;
205
+ }
206
+ /**
207
+ * Returns the source that was assigned to the ticket with the given ID at the given time
208
+ * @param timeMap the time map that should be used
209
+ * @param ticketId id of the ticket
210
+ * @param time the date for which the source should be returned
211
+ * @returns the source that was assigned to the ticket at the given time
212
+ */
213
+ function getSourceForTime(timeMap, ticketId, time) {
214
+ const ticketTimes = timeMap.get(ticketId);
215
+ if (!ticketTimes)
216
+ return null;
217
+ let currentSource = null;
218
+ // the sources are sorted by date, so we can just iterate over them and take the last one that is smaller than the given time
219
+ for (const ticketTime of ticketTimes) {
220
+ if (ticketTime.date <= time)
221
+ currentSource = ticketTime.source;
222
+ else
223
+ break; // we can break here because the sources are sorted by date
224
+ }
225
+ return currentSource;
226
+ }
227
+ async function convertSourcesToMessages(ticketSources) {
228
+ const messages = [];
229
+ for (const index in ticketSources) {
230
+ const ticketSource = ticketSources[index];
231
+ const previous = ticketSources[Number.parseInt(index) - 1];
232
+ // save ticket message
233
+ const ticketMessage = new types_1.Maintenance_Message({
234
+ title: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.SOURCE.TITLE,
235
+ content: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.SOURCE.CONTENT,
236
+ referencedObjectId: ticketSource.get("ticket").id,
237
+ classname: ticketSource.get("ticket").className,
238
+ displayAt: ticketSource.get("createdAt"),
239
+ data: {
240
+ type: "system",
241
+ origin: {
242
+ id: ticketSource.id,
243
+ classname: ticketSource.className,
244
+ },
245
+ translation: {
246
+ old: previous?.get("source")?.get("name") ?? "Nicht vorhanden",
247
+ new: ticketSource.get("source")?.get("name") ?? "Nicht vorhanden",
248
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(ticketSource.get("user")),
249
+ ticketName: ticketSource.get("ticket").get("title"),
250
+ },
251
+ },
252
+ user: ticketSource.get("user"),
253
+ tenant: ticketSource.get("tenant"),
254
+ });
255
+ messages.push(ticketMessage);
256
+ // save machinelog message
257
+ const machinelogMessage = new types_1.Maintenance_Message({
258
+ title: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.SOURCE.TITLE,
259
+ content: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.SOURCE.CONTENT,
260
+ referencedObjectId: ticketSource.get("source").id,
261
+ classname: ticketSource.get("source").className,
262
+ displayAt: ticketSource.get("createdAt"),
263
+ data: {
264
+ type: "system",
265
+ origin: {
266
+ id: ticketSource.get("ticket").id,
267
+ classname: ticketSource.get("ticket").className,
268
+ },
269
+ translation: {
270
+ old: previous?.get("source")?.get("name") ?? "Nicht vorhanden",
271
+ new: ticketSource.get("source")?.get("name") ?? "Nicht vorhanden",
272
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(ticketSource.get("user")),
273
+ ticketName: ticketSource.get("ticket").get("title"),
274
+ },
275
+ },
276
+ user: ticketSource.get("user"),
277
+ tenant: ticketSource.get("tenant"),
278
+ });
279
+ messages.push(machinelogMessage);
280
+ // save also a message for the source that was assigned to the ticket
281
+ if (previous) {
282
+ const previousSourceMessage = new types_1.Maintenance_Message({
283
+ title: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.SOURCE.TITLE,
284
+ content: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.SOURCE.CONTENT,
285
+ referencedObjectId: previous.get("source").id,
286
+ classname: previous.get("source").className,
287
+ displayAt: ticketSource.get("createdAt"),
288
+ data: {
289
+ type: "system",
290
+ origin: {
291
+ id: ticketSource.get("ticket").id,
292
+ classname: ticketSource.get("ticket").className,
293
+ },
294
+ translation: {
295
+ old: previous.get("source").get("name") ?? "Nicht vorhanden",
296
+ new: ticketSource.get("source")?.get("name") ?? "Nicht vorhanden",
297
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(ticketSource.get("user")),
298
+ ticketName: ticketSource.get("ticket").get("title"),
299
+ },
300
+ },
301
+ user: ticketSource.get("user"),
302
+ tenant: ticketSource.get("tenant"),
303
+ });
304
+ messages.push(previousSourceMessage);
305
+ }
306
+ }
307
+ await types_1.Maintenance_Message.saveAll(messages, { useMasterKey: true });
308
+ }
309
+ async function ticketStateToMessage(timeMap) {
310
+ console.log("=================================");
311
+ console.log("Creating ticket state messages");
312
+ console.log("=================================");
313
+ await convertToMessage({
314
+ className: types_1.Maintenance_Ticket_Kanban_State.className,
315
+ timeMap: timeMap,
316
+ ticketTranslation: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.KANBANSTATE,
317
+ machinelogTranslation: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.KANBANSTATE,
318
+ getTranslationData: (entry, prev) => {
319
+ return {
320
+ old: prev?.get("state")?.get("label") ?? "Nicht vorhanden",
321
+ new: entry.get("state")?.get("label") ?? "Nicht vorhanden",
322
+ };
323
+ },
324
+ isValueValid: (entry) => !!entry.get("state"),
325
+ });
326
+ }
327
+ async function ticketIssuecategoryToMessage(timeMap) {
328
+ console.log("=================================");
329
+ console.log("Creating ticket issue messages");
330
+ console.log("=================================");
331
+ await convertToMessage({
332
+ className: types_1.Maintenance_Ticket_Issuecategory.className,
333
+ timeMap: timeMap,
334
+ ticketTranslation: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.ISSUECATEGORY,
335
+ machinelogTranslation: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.ISSUECATEGORY,
336
+ getTranslationData: (entry, prev) => {
337
+ return {
338
+ old: prev?.get("issuecategory")?.get("name") ?? "Nicht vorhanden",
339
+ new: entry.get("issuecategory")?.get("name") ?? "Nicht vorhanden",
340
+ };
341
+ },
342
+ isValueValid: (entry) => !!entry.get("issuecategory"),
343
+ });
344
+ }
345
+ async function ticketPriorityToMessage(timeMap) {
346
+ console.log("=================================");
347
+ console.log("Creating ticket priority messages");
348
+ console.log("=================================");
349
+ await convertToMessage({
350
+ className: types_1.Maintenance_Priority.className,
351
+ timeMap: timeMap,
352
+ ticketTranslation: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.PRIORITY,
353
+ machinelogTranslation: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.PRIORITY,
354
+ getTranslationData: (entry, prev) => {
355
+ return {
356
+ old: prev?.get("value") ?? "Nicht vorhanden",
357
+ new: entry.get("value") ?? "Nicht vorhanden",
358
+ };
359
+ },
360
+ isValueValid: (entry) => entry.get("value") !== undefined,
361
+ });
362
+ }
363
+ async function ticketRestrictionToMessage(timeMap) {
364
+ console.log("=================================");
365
+ console.log("Creating ticket restriction messages");
366
+ console.log("=================================");
367
+ await convertToMessage({
368
+ className: types_1.Maintenance_Restriction.className,
369
+ timeMap: timeMap,
370
+ ticketTranslation: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.RESTRICTION,
371
+ machinelogTranslation: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.RESTRICTION,
372
+ getTranslationData: (entry, prev) => {
373
+ return {
374
+ old: prev?.get("value") ?? "Nicht vorhanden",
375
+ new: entry.get("value") ?? "Nicht vorhanden",
376
+ };
377
+ },
378
+ isValueValid: (entry) => entry.get("value") !== undefined,
379
+ });
380
+ }
381
+ async function ticketDowntimeToMessage(timeMap) {
382
+ console.log("=================================");
383
+ console.log("Creating ticket downtime messages");
384
+ console.log("=================================");
385
+ await convertToMessage({
386
+ className: types_1.Maintenance_Downtime.className,
387
+ timeMap: timeMap,
388
+ ticketTranslation: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.DOWNTIME,
389
+ machinelogTranslation: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.DOWNTIME,
390
+ getTranslationData: (entry, prev) => {
391
+ return {
392
+ old: prev?.get("value") ?? "Nicht vorhanden",
393
+ new: entry.get("value") ?? "Nicht vorhanden",
394
+ };
395
+ },
396
+ isValueValid: (entry) => entry.get("value") !== undefined,
397
+ });
398
+ }
399
+ async function ticketFrequencyToMessage(timeMap) {
400
+ console.log("=================================");
401
+ console.log("Creating ticket frequency messages");
402
+ console.log("=================================");
403
+ await convertToMessage({
404
+ className: types_1.Maintenance_Frequency.className,
405
+ timeMap: timeMap,
406
+ ticketTranslation: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.FREQUENCY,
407
+ machinelogTranslation: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.FREQUENCY,
408
+ getTranslationData: (entry, prev) => {
409
+ return {
410
+ old: prev?.get("value") ?? "Nicht vorhanden",
411
+ new: entry.get("value") ?? "Nicht vorhanden",
412
+ };
413
+ },
414
+ isValueValid: (entry) => entry.get("value") !== undefined,
415
+ });
416
+ }
417
+ async function ticketDuedateToMessage(timeMap) {
418
+ console.log("=================================");
419
+ console.log("Creating ticket duedate messages");
420
+ console.log("=================================");
421
+ await convertToMessage({
422
+ className: types_1.Maintenance_Duedate.className,
423
+ timeMap: timeMap,
424
+ ticketTranslation: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.DUEDATE,
425
+ machinelogTranslation: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.DUEDATE,
426
+ getTranslationData: (entry, prev) => {
427
+ return {
428
+ oldstart: prev?.get("start")?.toLocaleDateString("de-DE") ?? "Nicht vorhanden",
429
+ oldend: prev?.get("end")?.toLocaleDateString("de-DE") ?? "Nicht vorhanden",
430
+ newstart: entry.get("start")?.toLocaleDateString("de-DE") ?? "Nicht vorhanden",
431
+ newend: entry.get("end")?.toLocaleDateString("de-DE") ?? "Nicht vorhanden",
432
+ };
433
+ },
434
+ isValueValid: (entry) => entry.get("end") !== undefined,
435
+ });
436
+ }
437
+ async function ticketTitleToMessage(timeMap) {
438
+ console.log("=================================");
439
+ console.log("Creating ticket title messages");
440
+ console.log("=================================");
441
+ await convertToMessage({
442
+ className: types_1.Maintenance_Ticket_Title.className,
443
+ timeMap: timeMap,
444
+ ticketTranslation: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.TITLE,
445
+ machinelogTranslation: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.TITLE,
446
+ getTranslationData: (entry, prev) => {
447
+ return {
448
+ old: prev?.get("title") ?? "Nicht vorhanden",
449
+ new: entry.get("title") ?? "Nicht vorhanden",
450
+ };
451
+ },
452
+ isValueValid: (entry) => !!entry.get("title"),
453
+ });
454
+ }
455
+ async function convertScheduleExecutionToMessage() {
456
+ console.log("=================================");
457
+ console.log("Creating schedule execution messages");
458
+ console.log("=================================");
459
+ const executions = await new Parse.Query(types_1.Maintenance_Schedule_Execution)
460
+ .limit(1000000)
461
+ .includeAll()
462
+ .find({ useMasterKey: true });
463
+ const messages = [];
464
+ for (const execution of executions) {
465
+ const source = execution.get("source");
466
+ if (!source)
467
+ continue;
468
+ const message = new types_1.Maintenance_Message({
469
+ title: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.SCHEDULEEXECUTION.TITLE,
470
+ content: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.SCHEDULEEXECUTION.CONTENT,
471
+ referencedObjectId: source.id,
472
+ classname: source.className,
473
+ displayAt: execution.get("finishedAt") ?? execution.get("createdAt"),
474
+ data: {
475
+ type: "system",
476
+ origin: {
477
+ id: execution.id,
478
+ classname: execution.className,
479
+ },
480
+ translation: {
481
+ title: execution.get("title"),
482
+ description: execution.get("description"),
483
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(execution.get("user")),
484
+ },
485
+ },
486
+ user: execution.get("user"),
487
+ tenant: execution.get("tenant"),
488
+ });
489
+ messages.push(message);
490
+ }
491
+ await types_1.Maintenance_Message.saveAll(messages, { useMasterKey: true });
492
+ }
@@ -3,11 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.init = init;
4
4
  const __1 = require("..");
5
5
  const openinc_openservice_save_ticket_data_1 = require("../functions/openinc-openservice-save-ticket-data");
6
+ const openinc_openservice_ticket_data_1 = require("../functions/openinc-openservice-ticket-data");
6
7
  const removeShorltyPreviousEntry_1 = require("../helper/removeShorltyPreviousEntry");
8
+ const TranslationKeys_1 = require("../helper/TranslationKeys");
7
9
  const types_1 = require("../types");
8
10
  const Maintenance_Message_1 = require("./Maintenance_Message");
9
- const TRANSLATION_TITLE = "maintenance:ticket.message.priority.changed.title";
10
- const TRANSLATION_CONTENT = "maintenance:ticket.message.priority.changed.content";
11
+ const TRANSLATION_TITLE = TranslationKeys_1.MessageTranslationKeys.TICKETLOG.PRIORITY.TITLE;
12
+ const TRANSLATION_CONTENT = TranslationKeys_1.MessageTranslationKeys.TICKETLOG.PRIORITY.CONTENT;
13
+ const TRANSLATION_TITLE_MACHINELOG = TranslationKeys_1.MessageTranslationKeys.MACHINELOG.PRIORITY.TITLE;
14
+ const TRANSLATION_CONTENT_MACHINELOG = TranslationKeys_1.MessageTranslationKeys.MACHINELOG.PRIORITY.CONTENT;
11
15
  async function init() {
12
16
  (0, __1.beforeSaveHook)(types_1.Maintenance_Priority, async (request) => {
13
17
  const { object, original, user } = request;
@@ -34,6 +38,10 @@ async function init() {
34
38
  }, (first, second) => {
35
39
  return first.get("value") === second.get("value");
36
40
  });
41
+ // fetch necessary data
42
+ await savedObject.fetchWithInclude(["ticket"], {
43
+ useMasterKey: true,
44
+ });
37
45
  const previousPrio = await new Parse.Query(types_1.Maintenance_Priority)
38
46
  .includeAll()
39
47
  .equalTo("ticket", savedObject.get("ticket"))
@@ -55,8 +63,37 @@ async function init() {
55
63
  old: previousPrio?.get("value") ?? "Nicht vorhanden",
56
64
  new: savedObject?.get("value"),
57
65
  },
66
+ origin: {
67
+ id: savedObject.id,
68
+ classname: savedObject.className,
69
+ },
58
70
  },
59
71
  }).save(null, { useMasterKey: true });
72
+ // to machinelog
73
+ const source = (await (0, openinc_openservice_ticket_data_1.getTicketSource)(savedObject.get("ticket")))?.get("source");
74
+ if (source) {
75
+ await new types_1.Maintenance_Message({
76
+ referencedObjectId: source?.id,
77
+ classname: source?.className,
78
+ title: TRANSLATION_TITLE_MACHINELOG,
79
+ content: TRANSLATION_CONTENT_MACHINELOG,
80
+ user: user,
81
+ tenant: user?.get("tenant"),
82
+ data: {
83
+ type: "system",
84
+ translation: {
85
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(user),
86
+ old: previousPrio?.get("value") ?? "Nicht vorhanden",
87
+ new: savedObject?.get("value"),
88
+ ticketName: savedObject.get("ticket")?.get("title"),
89
+ },
90
+ origin: {
91
+ id: savedObject.get("ticket")?.id,
92
+ classname: savedObject.get("ticket")?.className,
93
+ },
94
+ },
95
+ }).save(null, { useMasterKey: true });
96
+ }
60
97
  //Save object.id in object.ticket.latestPriority
61
98
  const ticket = savedObject.get("ticket");
62
99
  ticket.set("latestPriorityValue", savedObject.get("value"));
@@ -3,11 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.init = init;
4
4
  const __1 = require("..");
5
5
  const openinc_openservice_save_ticket_data_1 = require("../functions/openinc-openservice-save-ticket-data");
6
+ const openinc_openservice_ticket_data_1 = require("../functions/openinc-openservice-ticket-data");
6
7
  const removeShorltyPreviousEntry_1 = require("../helper/removeShorltyPreviousEntry");
8
+ const TranslationKeys_1 = require("../helper/TranslationKeys");
7
9
  const types_1 = require("../types");
8
10
  const Maintenance_Message_1 = require("./Maintenance_Message");
9
- const TRANSLATION_TITLE = "maintenance:ticket.message.restriction.changed.title";
10
- const TRANSLATION_CONTENT = "maintenance:ticket.message.restriction.changed.content";
11
+ const TRANSLATION_TITLE = TranslationKeys_1.MessageTranslationKeys.TICKETLOG.RESTRICTION.TITLE;
12
+ const TRANSLATION_CONTENT = TranslationKeys_1.MessageTranslationKeys.TICKETLOG.RESTRICTION.CONTENT;
13
+ const TRANSLATION_TITLE_MACHINELOG = TranslationKeys_1.MessageTranslationKeys.MACHINELOG.RESTRICTION.TITLE;
14
+ const TRANSLATION_CONTENT_MACHINELOG = TranslationKeys_1.MessageTranslationKeys.MACHINELOG.RESTRICTION.CONTENT;
11
15
  async function init() {
12
16
  (0, __1.beforeSaveHook)(types_1.Maintenance_Restriction, async (request) => {
13
17
  const { object, original, user } = request;
@@ -37,6 +41,10 @@ async function init() {
37
41
  }, (first, second) => {
38
42
  return first.get("value") === second.get("value");
39
43
  });
44
+ // fetch necessary data
45
+ await savedObject.fetchWithInclude(["ticket"], {
46
+ useMasterKey: true,
47
+ });
40
48
  const previous = await new Parse.Query(types_1.Maintenance_Restriction)
41
49
  .includeAll()
42
50
  .equalTo("ticket", savedObject.get("ticket"))
@@ -58,7 +66,36 @@ async function init() {
58
66
  old: previous?.get("value") ?? "Nicht vorhanden",
59
67
  new: savedObject?.get("value"),
60
68
  },
69
+ origin: {
70
+ id: savedObject.id,
71
+ classname: savedObject.className,
72
+ },
61
73
  },
62
74
  }).save(null, { useMasterKey: true });
75
+ // to machinelog
76
+ const source = (await (0, openinc_openservice_ticket_data_1.getTicketSource)(savedObject.get("ticket")))?.get("source");
77
+ if (source) {
78
+ await new types_1.Maintenance_Message({
79
+ referencedObjectId: source?.id,
80
+ classname: source?.className,
81
+ title: TRANSLATION_TITLE_MACHINELOG,
82
+ content: TRANSLATION_CONTENT_MACHINELOG,
83
+ user: user,
84
+ tenant: user?.get("tenant"),
85
+ data: {
86
+ type: "system",
87
+ translation: {
88
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(user),
89
+ old: previous?.get("value") ?? "Nicht vorhanden",
90
+ new: savedObject?.get("value"),
91
+ ticketName: savedObject.get("ticket")?.get("title"),
92
+ },
93
+ origin: {
94
+ id: savedObject.get("ticket")?.id,
95
+ classname: savedObject.get("ticket")?.className,
96
+ },
97
+ },
98
+ }).save(null, { useMasterKey: true });
99
+ }
63
100
  });
64
101
  }
@@ -2,8 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.init = init;
4
4
  const __1 = require("..");
5
+ const openinc_openservice_save_ticket_data_1 = require("../functions/openinc-openservice-save-ticket-data");
5
6
  const catchError_1 = require("../helper/catchError");
7
+ const TranslationKeys_1 = require("../helper/TranslationKeys");
6
8
  const types_1 = require("../types");
9
+ const TRANSLATION_TITLE = TranslationKeys_1.MessageTranslationKeys.MACHINELOG.SCHEDULEEXECUTION.TITLE;
10
+ const TRANSLATION_CONTENT = TranslationKeys_1.MessageTranslationKeys.MACHINELOG.SCHEDULEEXECUTION.CONTENT;
7
11
  async function init() {
8
12
  (0, __1.beforeSaveHook)(types_1.Maintenance_Schedule_Execution, async (request) => {
9
13
  const { object, original, user } = request;
@@ -12,6 +16,13 @@ async function init() {
12
16
  });
13
17
  (0, __1.afterSaveHook)(types_1.Maintenance_Schedule_Execution, async (request) => {
14
18
  const { object, original, user } = request;
19
+ // save schedule message to source
20
+ addMachinelogMessage(object, user);
21
+ //If this is an update, do nothing
22
+ if (original !== undefined) {
23
+ return;
24
+ }
25
+ //If this is a new object, create all steps from the origin
15
26
  const tenant = object.get("tenant")
16
27
  ? object.get("tenant")
17
28
  : Parse.User.current()
@@ -61,3 +72,28 @@ async function init() {
61
72
  }
62
73
  });
63
74
  }
75
+ async function addMachinelogMessage(object, user) {
76
+ const source = await object.get("source")?.fetch({ useMasterKey: true });
77
+ if (source)
78
+ new types_1.Maintenance_Message({
79
+ referencedObjectId: source.id,
80
+ classname: source.className,
81
+ title: TRANSLATION_TITLE,
82
+ content: TRANSLATION_CONTENT,
83
+ user: user,
84
+ tenant: user.get("tenant"),
85
+ displayAt: object.get("finishedAt") ?? object.get("createdAt"),
86
+ data: {
87
+ type: "system",
88
+ origin: {
89
+ id: object.id,
90
+ classname: object.className,
91
+ },
92
+ translation: {
93
+ title: object.get("title"),
94
+ description: object.get("description"),
95
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(user),
96
+ },
97
+ },
98
+ }).save(null, { useMasterKey: true });
99
+ }