@openinc/parse-server-opendash 3.0.8 → 3.0.9

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 (46) hide show
  1. package/dist/features/openservice/functions/assignUsersAndRoles.d.ts +8 -0
  2. package/dist/features/openservice/functions/assignUsersAndRoles.js +168 -0
  3. package/dist/features/openservice/functions/getTicketObject.d.ts +4 -0
  4. package/dist/features/openservice/functions/getTicketObject.js +22 -0
  5. package/dist/features/openservice/functions/saveDowntime.d.ts +3 -0
  6. package/dist/features/openservice/functions/saveDowntime.js +23 -0
  7. package/dist/features/openservice/functions/saveDuedate.d.ts +8 -0
  8. package/dist/features/openservice/functions/saveDuedate.js +30 -0
  9. package/dist/features/openservice/functions/saveFrequency.d.ts +3 -0
  10. package/dist/features/openservice/functions/saveFrequency.js +23 -0
  11. package/dist/features/openservice/functions/saveIssuecategory.d.ts +4 -0
  12. package/dist/features/openservice/functions/saveIssuecategory.js +39 -0
  13. package/dist/features/openservice/functions/saveMaterial.d.ts +4 -0
  14. package/dist/features/openservice/functions/saveMaterial.js +13 -0
  15. package/dist/features/openservice/functions/saveMedia.d.ts +3 -0
  16. package/dist/features/openservice/functions/saveMedia.js +17 -0
  17. package/dist/features/openservice/functions/saveMessage.d.ts +5 -0
  18. package/dist/features/openservice/functions/saveMessage.js +66 -0
  19. package/dist/features/openservice/functions/savePriority.d.ts +3 -0
  20. package/dist/features/openservice/functions/savePriority.js +23 -0
  21. package/dist/features/openservice/functions/saveProject.d.ts +3 -0
  22. package/dist/features/openservice/functions/saveProject.js +39 -0
  23. package/dist/features/openservice/functions/saveRestriction.d.ts +3 -0
  24. package/dist/features/openservice/functions/saveRestriction.js +23 -0
  25. package/dist/features/openservice/functions/saveSource.d.ts +3 -0
  26. package/dist/features/openservice/functions/saveSource.js +23 -0
  27. package/dist/features/openservice/functions/saveState.d.ts +4 -0
  28. package/dist/features/openservice/functions/saveState.js +38 -0
  29. package/dist/features/openservice/functions/saveTicketTitle.d.ts +3 -0
  30. package/dist/features/openservice/functions/saveTicketTitle.js +19 -0
  31. package/dist/features/openservice/index.d.ts +19 -0
  32. package/dist/features/openservice/index.js +33 -1
  33. package/dist/features/openservice/types/FetchOptions.d.ts +4 -0
  34. package/dist/features/openservice/types/FetchOptions.js +2 -0
  35. package/dist/features/openservice/types/Material.d.ts +6 -0
  36. package/dist/features/openservice/types/Material.js +2 -0
  37. package/dist/features/openservice/types/MessageData.d.ts +15 -0
  38. package/dist/features/openservice/types/MessageData.js +2 -0
  39. package/dist/features/openservice/types/SaveValues.d.ts +26 -0
  40. package/dist/features/openservice/types/SaveValues.js +2 -0
  41. package/dist/features/openservice/types/TicketData.d.ts +1 -2
  42. package/dist/functions/openinc-openservice-save-ticket-data.d.ts +3 -44
  43. package/dist/functions/openinc-openservice-save-ticket-data.js +18 -422
  44. package/dist/functions/openinc-openservice-ticket-data.js +3 -28
  45. package/dist/hooks/Maintenance_Ticket_Material.d.ts +1 -6
  46. package/package.json +3 -2
@@ -3,11 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getUsername = getUsername;
4
4
  exports.init = init;
5
5
  exports.saveTicketData = saveTicketData;
6
- const parse_1 = require("parse");
7
6
  const openware_1 = require("../features/openware");
8
7
  const catchError_1 = require("../helper/catchError");
8
+ const openservice_1 = require("../features/openservice");
9
9
  const types_1 = require("../types");
10
- const openinc_openservice_ticket_data_1 = require("./openinc-openservice-ticket-data");
11
10
  function getUsername(user) {
12
11
  if (!user)
13
12
  return "System";
@@ -53,7 +52,7 @@ async function saveTicketData(data, user) {
53
52
  const fetchOptions = user
54
53
  ? { sessionToken: user.getSessionToken() }
55
54
  : { useMasterKey: true };
56
- const ticket = await getTicketObject(data, user, fetchOptions);
55
+ const ticket = await (0, openservice_1.getTicketObject)(data, user, fetchOptions);
57
56
  const owticketobj = {
58
57
  ticket: ticket,
59
58
  priority: 0,
@@ -66,17 +65,15 @@ async function saveTicketData(data, user) {
66
65
  };
67
66
  // needs to be the first save to save a message before data change messages are created on ticket creation
68
67
  if (data.message)
69
- await saveMessage(ticket, data.message, fetchOptions, data);
68
+ await (0, openservice_1.saveMessage)(ticket, data.message, fetchOptions, data);
70
69
  if (data.assignedTo !== undefined)
71
- await assignUsersAndRoles(ticket, data.assignedTo, fetchOptions, user);
70
+ await (0, openservice_1.assignUsersAndRoles)(ticket, data.assignedTo, fetchOptions, user);
72
71
  if (data.title)
73
- await saveTicketTitle(ticket, fetchOptions);
74
- if (data.dailySchedule !== undefined)
75
- await saveDailySchedule(ticket, data.dailySchedule, fetchOptions);
72
+ await (0, openservice_1.saveTicketTitle)(ticket, fetchOptions);
76
73
  if (data.duedate)
77
- await saveDuedate(ticket, data.duedate, fetchOptions);
74
+ await (0, openservice_1.saveDuedate)(ticket, data.duedate, fetchOptions);
78
75
  if (data.priority !== undefined) {
79
- const savedpriority = await savePriority(ticket, data.priority, fetchOptions);
76
+ const savedpriority = await (0, openservice_1.savePriority)(ticket, data.priority, fetchOptions);
80
77
  owticketobj.priority = savedpriority;
81
78
  }
82
79
  else {
@@ -93,7 +90,7 @@ async function saveTicketData(data, user) {
93
90
  }
94
91
  }
95
92
  if (data.downtime !== undefined) {
96
- const saveddowntime = await saveDowntime(ticket, data.downtime, fetchOptions);
93
+ const saveddowntime = await (0, openservice_1.saveDowntime)(ticket, data.downtime, fetchOptions);
97
94
  owticketobj.downtime = saveddowntime;
98
95
  }
99
96
  else {
@@ -110,7 +107,7 @@ async function saveTicketData(data, user) {
110
107
  }
111
108
  }
112
109
  if (data.frequency !== undefined) {
113
- const savedfrequency = await saveFrequency(ticket, data.frequency, fetchOptions);
110
+ const savedfrequency = await (0, openservice_1.saveFrequency)(ticket, data.frequency, fetchOptions);
114
111
  owticketobj.frequency = savedfrequency;
115
112
  }
116
113
  else {
@@ -127,7 +124,7 @@ async function saveTicketData(data, user) {
127
124
  }
128
125
  }
129
126
  if (data.restriction !== undefined) {
130
- const savedrestriction = await saveRestriction(ticket, data.restriction, fetchOptions);
127
+ const savedrestriction = await (0, openservice_1.saveRestriction)(ticket, data.restriction, fetchOptions);
131
128
  owticketobj.restriction = savedrestriction;
132
129
  }
133
130
  else {
@@ -144,7 +141,7 @@ async function saveTicketData(data, user) {
144
141
  }
145
142
  }
146
143
  if (data.issuecategory) {
147
- const savedissuecategory = await saveIssueCategory(ticket, data.issuecategory, fetchOptions);
144
+ const savedissuecategory = await (0, openservice_1.saveIssueCategory)(ticket, data.issuecategory, fetchOptions);
148
145
  const [fetchedSavedIssuecategoryError, fetchedSavedIssuecategory] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Ticket_Issuecategory)
149
146
  .include("issuecategory")
150
147
  .get(savedissuecategory.id, fetchOptions));
@@ -156,7 +153,7 @@ async function saveTicketData(data, user) {
156
153
  }
157
154
  }
158
155
  if (data.state) {
159
- const savedstate = await saveState(ticket, data.state, fetchOptions);
156
+ const savedstate = await (0, openservice_1.saveState)(ticket, data.state, fetchOptions);
160
157
  const [fetchedSavedStateError, fetchedSavedState] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Ticket_Kanban_State)
161
158
  .include("state")
162
159
  .get(savedstate.id, fetchOptions));
@@ -168,19 +165,19 @@ async function saveTicketData(data, user) {
168
165
  }
169
166
  }
170
167
  if (data.media)
171
- await saveMedia(ticket, data.media, fetchOptions);
168
+ await (0, openservice_1.saveMedia)(ticket, data.media, fetchOptions);
172
169
  if (data.material)
173
- await saveMaterial(ticket, data.material, fetchOptions);
170
+ await (0, openservice_1.saveMaterial)(ticket, data.material, fetchOptions);
174
171
  if (data.project)
175
- await saveTicketProject(ticket, data.project, fetchOptions);
172
+ await (0, openservice_1.saveProject)(ticket, data.project, fetchOptions);
176
173
  // save defaults
177
174
  if (!data.issuecategory && !data.existingTicketId)
178
- await saveDefaultIssueCategory(ticket, fetchOptions);
175
+ await (0, openservice_1.saveDefaultIssueCategory)(ticket, fetchOptions);
179
176
  if (!data.state && !data.existingTicketId)
180
- await saveDefaultState(ticket, fetchOptions);
177
+ await (0, openservice_1.saveDefaultState)(ticket, fetchOptions);
181
178
  // save source last so the machinelog does not have the initialization messages of the ticket data
182
179
  if (data.source) {
183
- await saveSource(ticket, data.source, fetchOptions);
180
+ await (0, openservice_1.saveSource)(ticket, data.source, fetchOptions);
184
181
  }
185
182
  //Get source from ticket and save to openware
186
183
  const [fetchedTicketSourceError, ticketsource] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Ticket_Source)
@@ -325,404 +322,3 @@ async function publishToOpenWare(owticketobj, ticket, source) {
325
322
  console.error("Error publishing ticket to openware", error);
326
323
  }
327
324
  }
328
- async function getTicketObject(value, user, fetchOptions) {
329
- if (value.existingTicketId) {
330
- const ticket = await new Parse.Query(types_1.Maintenance_Ticket).get(value.existingTicketId, fetchOptions);
331
- if (!ticket) {
332
- throw new Error("Ticket not found");
333
- }
334
- if (value.title && ticket.get("title") !== value.title) {
335
- ticket.set("title", value.title);
336
- await ticket.save(null, fetchOptions);
337
- }
338
- return ticket;
339
- }
340
- return await new types_1.Maintenance_Ticket({
341
- title: value.title,
342
- user: user,
343
- tenant: user?.get("tenant"),
344
- }).save(null, fetchOptions);
345
- }
346
- async function saveState(ticket, state, fetchOptions) {
347
- return await new types_1.Maintenance_Ticket_Kanban_State({
348
- ticket,
349
- state: new types_1.Maintenance_Kanban_State({ objectId: state }), // pointer
350
- tenant: ticket.get("tenant"),
351
- user: ticket.get("user"),
352
- }).save(null, fetchOptions);
353
- }
354
- async function assignUsersAndRoles(ticket, assignedTo, fetchOptions, assigningUser) {
355
- const assignedUsers = await ticket
356
- .relation("assignedusers")
357
- .query()
358
- .find(fetchOptions);
359
- const assignedroles = await ticket
360
- .relation("assignedroles")
361
- .query()
362
- .find(fetchOptions);
363
- ticket.relation("assignedusers").remove(assignedUsers);
364
- ticket.relation("assignedroles").remove(assignedroles);
365
- const assignments = [];
366
- const batchTime = new Date();
367
- const ids = assignedTo.map((a) => a.id);
368
- const newUsers = await new Parse.Query(parse_1.User)
369
- .containedIn("objectId", ids)
370
- .find(fetchOptions);
371
- const newRoles = await new Parse.Query(parse_1.Role)
372
- .containedIn("objectId", ids)
373
- .find(fetchOptions);
374
- ticket.relation("assignedusers").add(newUsers);
375
- ticket.relation("assignedroles").add(newRoles);
376
- await ticket.save(null, fetchOptions);
377
- if (newRoles.length === 0 && newUsers.length === 0) {
378
- assignments.push(new types_1.Maintenance_Ticket_Assignment({
379
- ticket,
380
- assignedUser: undefined,
381
- assignedRole: undefined,
382
- user: ticket.user,
383
- tenant: ticket.tenant,
384
- batchStamp: batchTime,
385
- }));
386
- }
387
- for (const assignedTo of newUsers) {
388
- assignments.push(new types_1.Maintenance_Ticket_Assignment({
389
- ticket,
390
- assignedUser: assignedTo,
391
- tenant: ticket.get("tenant"),
392
- user: ticket.get("user"),
393
- batchStamp: batchTime,
394
- }));
395
- await new types_1.Notification({
396
- data: {
397
- ticketId: ticket.id,
398
- translation: {
399
- ticketName: ticket.get("title"),
400
- ticketId: ticket.id,
401
- username: getUsername(assigningUser) ?? "System",
402
- },
403
- },
404
- isSent: false,
405
- title: "maintenance:ticket.assignuser.notification.title",
406
- user: assignedTo,
407
- description: "maintenance:ticket.assignuser.notification.description",
408
- }).save(null, fetchOptions);
409
- }
410
- for (const assignedTo of newRoles) {
411
- assignments.push(new types_1.Maintenance_Ticket_Assignment({
412
- ticket,
413
- assignedRole: assignedTo,
414
- tenant: ticket.get("tenant"),
415
- user: ticket.get("user"),
416
- batchStamp: batchTime,
417
- }));
418
- const roleUsers = await assignedTo
419
- .relation("users")
420
- .query()
421
- .find(fetchOptions);
422
- for (const roleUser of roleUsers) {
423
- await new types_1.Notification({
424
- data: {
425
- ticketId: ticket.id,
426
- translation: {
427
- ticketName: ticket.get("title"),
428
- ticketId: ticket.id,
429
- user: ticket.get("user")?.get("username"),
430
- role: assignedTo.get("label"),
431
- },
432
- },
433
- isSent: false,
434
- title: "maintenance:ticket.assignrole.notification.title",
435
- user: roleUser,
436
- description: "maintenance:ticket.assignrole.notification.description",
437
- }).save(null, fetchOptions);
438
- }
439
- }
440
- await types_1.Maintenance_Ticket_Assignment.saveAll(assignments, fetchOptions);
441
- //Set ACLs for assigned users and roles on ticket
442
- const acl = new Parse.ACL();
443
- for (const assignedUser of newUsers) {
444
- acl.setReadAccess(assignedUser, true);
445
- acl.setWriteAccess(assignedUser, true);
446
- }
447
- // get the parent roles of the assigned roles
448
- const rolesWithParents = await addParentRoles(newRoles);
449
- // remove duplicates from the array
450
- const distinctRolesWithParents = (0, openinc_openservice_ticket_data_1.arrayToDistinct)(rolesWithParents, (obj) => obj.id);
451
- for (const assignedRole of distinctRolesWithParents) {
452
- acl.setRoleReadAccess(assignedRole, true);
453
- acl.setRoleWriteAccess(assignedRole, true);
454
- }
455
- ticket.setACL(acl);
456
- await ticket.save(null, fetchOptions);
457
- // SAVE ASSIGNMENT MESSAGE
458
- // set the content for the message
459
- let content = "maintenance:ticket.eventlist.OD3_Maintenance_Ticket_Assignment.none";
460
- if (newUsers.length > 0 && newRoles.length > 0)
461
- content =
462
- "maintenance:ticket.eventlist.OD3_Maintenance_Ticket_Assignment.both";
463
- else if (newUsers.length > 0)
464
- content =
465
- "maintenance:ticket.eventlist.OD3_Maintenance_Ticket_Assignment.user";
466
- else if (newRoles.length > 0)
467
- content =
468
- "maintenance:ticket.eventlist.OD3_Maintenance_Ticket_Assignment.role";
469
- await new types_1.Maintenance_Message({
470
- referencedObjectId: ticket.id,
471
- classname: types_1.Maintenance_Ticket.className,
472
- title: "maintenance:ticket.message.assignment.changed.title",
473
- content,
474
- user: ticket.get("user"),
475
- tenant: ticket.get("tenant"),
476
- data: {
477
- type: "system",
478
- translation: {
479
- username: getUsername(assigningUser),
480
- userList: newUsers.map((u) => `'${u.get("username")}'`).join(", "),
481
- roleList: newRoles.map((r) => `'${r.get("label")}'`).join(", "),
482
- ticketName: ticket.get("title"),
483
- },
484
- origin: {
485
- id: ticket.id,
486
- classname: ticket.className,
487
- },
488
- },
489
- }).save(null, fetchOptions);
490
- await ticket.save(null, fetchOptions);
491
- }
492
- async function addParentRoles(roles) {
493
- for (const role of roles) {
494
- const roleQuery = new Parse.Query(parse_1.Role).equalTo("objectId", role.id);
495
- const parentRoles = await new Parse.Query(parse_1.Role)
496
- .matchesQuery("roles", roleQuery)
497
- .find();
498
- if (parentRoles.length > 0) {
499
- roles.push(...(await addParentRoles(parentRoles)));
500
- }
501
- }
502
- return roles;
503
- }
504
- async function saveTicketTitle(ticket, fetchOptions) {
505
- const ticketTitle = await new Parse.Query(types_1.Maintenance_Ticket_Title)
506
- .descending("createdAt")
507
- .equalTo("ticket", ticket)
508
- .first(fetchOptions);
509
- if ((ticketTitle && ticketTitle.get("title") !== ticket.get("title")) ||
510
- !ticketTitle) {
511
- await new types_1.Maintenance_Ticket_Title({
512
- ticket,
513
- title: ticket.get("title"),
514
- user: ticket.get("user"),
515
- tenant: ticket.get("tenant"),
516
- }).save(null, fetchOptions);
517
- }
518
- }
519
- async function saveDailySchedule(ticket, dailySchedule, fetchOptions) {
520
- const schedule = await new Parse.Query(types_1.Maintenance_DailySchedule).get(dailySchedule, fetchOptions);
521
- ticket.set("dailySchedule", schedule);
522
- schedule.relation("tickets").add(ticket);
523
- await schedule.save(null, fetchOptions);
524
- await ticket.save(null, fetchOptions);
525
- }
526
- async function saveDuedate(ticket, duedate, fetchOptions) {
527
- const dueDate = new types_1.Maintenance_Duedate({
528
- ticket,
529
- end: duedate.end,
530
- start: duedate.start,
531
- tenant: ticket.get("tenant"),
532
- user: ticket.get("user"),
533
- endformat: "DD.MM.YYYY",
534
- startformat: "DD.MM.YYYY",
535
- });
536
- await dueDate.save(null, fetchOptions);
537
- }
538
- async function saveDowntime(ticket, value, fetchOptions) {
539
- const downtime = new types_1.Maintenance_Downtime({
540
- ticket,
541
- value: value,
542
- tenant: ticket.get("tenant"),
543
- user: ticket.get("user"),
544
- });
545
- return await downtime.save(null, fetchOptions);
546
- }
547
- async function saveFrequency(ticket, value, fetchOptions) {
548
- const frequency = new types_1.Maintenance_Frequency({
549
- ticket,
550
- value: value,
551
- tenant: ticket.get("tenant"),
552
- user: ticket.get("user"),
553
- });
554
- return await frequency.save(null, fetchOptions);
555
- }
556
- async function saveRestriction(ticket, value, fetchOptions) {
557
- const restriction = new types_1.Maintenance_Restriction({
558
- ticket,
559
- value: value,
560
- tenant: ticket.get("tenant"),
561
- user: ticket.get("user"),
562
- });
563
- return await restriction.save(null, fetchOptions);
564
- }
565
- async function saveIssueCategory(ticket, value, fetchOptions) {
566
- const issueCategory = new types_1.Maintenance_Ticket_Issuecategory({
567
- ticket,
568
- issuecategory: new types_1.Maintenance_Issuecategory({ objectId: value }), // pointer
569
- tenant: ticket.get("tenant"),
570
- user: ticket.get("user"),
571
- });
572
- return await issueCategory.save(null, fetchOptions);
573
- }
574
- async function savePriority(ticket, value, fetchOptions) {
575
- const priority = new types_1.Maintenance_Priority({
576
- ticket,
577
- value: value,
578
- tenant: ticket.get("tenant"),
579
- user: ticket.get("user"),
580
- });
581
- return await priority.save(null, fetchOptions);
582
- }
583
- async function saveMedia(ticket, media, fetchOptions) {
584
- const message = new types_1.Maintenance_Message({
585
- referencedObjectId: ticket.id,
586
- classname: types_1.Maintenance_Ticket.className,
587
- data: { type: "media" },
588
- tenant: ticket.get("tenant"),
589
- user: ticket.get("user"),
590
- });
591
- message
592
- .relation("media")
593
- .add(media.map((m) => new types_1.Maintenance_Media({ objectId: m })));
594
- await message.save(null, fetchOptions);
595
- }
596
- async function saveSource(ticket, source, fetchOptions) {
597
- const tSource = new types_1.Maintenance_Ticket_Source({
598
- ticket,
599
- source: new types_1.Source({ objectId: source }),
600
- tenant: ticket.get("tenant"),
601
- user: ticket.get("user"),
602
- });
603
- return await tSource.save(null, fetchOptions);
604
- }
605
- async function saveMessage(ticket, message, fetchOptions, values) {
606
- if (values.existingTicketId &&
607
- message.title === "maintenance:ticket.update.message.title") {
608
- const description = await new Parse.Query(types_1.Maintenance_Message)
609
- .equalTo("referencedObjectId", ticket.id)
610
- .equalTo("classname", types_1.Maintenance_Ticket.className)
611
- .equalTo("title", "maintenance:ticket.create.database.subject.1")
612
- .first(fetchOptions);
613
- if (description) {
614
- // dont do anything when description is the same
615
- if (description.content === message.description)
616
- return;
617
- // update description
618
- description.set("content", message.description);
619
- await description.save(null, fetchOptions);
620
- return;
621
- }
622
- }
623
- // create new message log
624
- await new types_1.Maintenance_Message({
625
- content: message.description,
626
- referencedObjectId: ticket.id,
627
- classname: types_1.Maintenance_Ticket.className,
628
- tenant: ticket.get("tenant"),
629
- user: ticket.get("user"),
630
- title: message.title,
631
- data: {
632
- origin: { id: ticket.id, classname: ticket.className }, // default
633
- ...message.data,
634
- },
635
- }).save(null, fetchOptions);
636
- // to machinelog
637
- // if needed, this saves a message to the machinelog when a message is saved to the ticket
638
- // this counts for user input and the ticket creation
639
- // const source = values.source
640
- // ? await new Parse.Query(Source).get(values.source, fetchOptions)
641
- // : (await getTicketSource(ticket))?.get("source");
642
- // if (source) {
643
- // await new Maintenance_Message({
644
- // referencedObjectId: source.id,
645
- // classname: source.className,
646
- // title: message.title,
647
- // content: message.description,
648
- // user: ticket.get("user"),
649
- // tenant: ticket.get("tenant"),
650
- // data: {
651
- // type: "system",
652
- // translation: {
653
- // username: getUsername(ticket.get("user") as _User),
654
- // old: "Nicht vorhanden",
655
- // new: ticket.get("title"),
656
- // ticketName: ticket.get("title"),
657
- // },
658
- // origin: {
659
- // id: ticket.id,
660
- // classname: ticket.className,
661
- // },
662
- // ...message.data,
663
- // } as MessageData,
664
- // }).save(null, fetchOptions);
665
- // }
666
- }
667
- async function saveMaterial(ticket, material, fetchOptions) {
668
- const materialObject = new types_1.Maintenance_Ticket_Material({
669
- ticket,
670
- itemList: material,
671
- tenant: ticket.get("tenant"),
672
- user: ticket.get("user"),
673
- });
674
- await materialObject.save(null, fetchOptions);
675
- }
676
- async function saveTicketProject(ticket, project, fetchOptions) {
677
- // check if ticket already has a project assigned
678
- // if so, remove the ticket from the old project
679
- const prevProject = await ticket.get("project")?.fetch(fetchOptions);
680
- if (prevProject && prevProject.id !== project) {
681
- prevProject.relation("tickets").remove(ticket);
682
- prevProject.save(null, fetchOptions);
683
- }
684
- const projectObj = await new Parse.Query(types_1.Maintenance_Project)
685
- .equalTo("objectId", project)
686
- .first(fetchOptions);
687
- const ticketProjectObject = new types_1.Maintenance_Ticket_Project({
688
- ticket,
689
- project: projectObj,
690
- tenant: ticket.get("tenant"),
691
- user: ticket.get("user"),
692
- });
693
- await ticketProjectObject.save(null, fetchOptions);
694
- ticket.set("project", projectObj);
695
- await ticket.save(null, fetchOptions);
696
- if (projectObj) {
697
- projectObj.relation("tickets").add(ticket);
698
- await projectObj.save(null, fetchOptions);
699
- }
700
- }
701
- async function saveDefaultIssueCategory(ticket, fetchOptions) {
702
- const catchAll = await new Parse.Query(types_1.Maintenance_Issuecategory)
703
- .equalTo("catchall", true)
704
- .first(fetchOptions);
705
- if (!catchAll)
706
- return;
707
- const issueCategory = new types_1.Maintenance_Ticket_Issuecategory({
708
- ticket,
709
- issuecategory: catchAll,
710
- tenant: ticket.get("tenant"),
711
- user: ticket.get("user"),
712
- });
713
- await issueCategory.save(null, fetchOptions);
714
- }
715
- async function saveDefaultState(ticket, fetchOptions) {
716
- const newState = await new Parse.Query(types_1.Maintenance_Kanban_State)
717
- .equalTo("isInbox", true)
718
- .first(fetchOptions);
719
- if (!newState)
720
- return;
721
- const state = new types_1.Maintenance_Ticket_Kanban_State({
722
- ticket,
723
- state: newState,
724
- tenant: ticket.get("tenant"),
725
- user: ticket.get("user"),
726
- });
727
- await state.save(null, fetchOptions);
728
- }
@@ -105,7 +105,6 @@ async function getTicketData(tickets) {
105
105
  const priority = getPriority(ticket);
106
106
  const source = getTicketSource(ticket);
107
107
  const state = getState(ticket);
108
- const dailySchedule = getDailySchedule(ticket);
109
108
  const messages = getMessages(ticket);
110
109
  const material = getTicketMaterial(ticket);
111
110
  const project = ticket.get("project")?.fetch({ useMasterKey: true });
@@ -118,7 +117,6 @@ async function getTicketData(tickets) {
118
117
  priority,
119
118
  source,
120
119
  state,
121
- dailySchedule,
122
120
  messages,
123
121
  material,
124
122
  project,
@@ -133,11 +131,10 @@ async function getTicketData(tickets) {
133
131
  priority: dataPromises[5],
134
132
  source: dataPromises[6]?.get("source"),
135
133
  state: dataPromises[7]?.get("state"),
136
- dailySchedule: dataPromises[8],
137
- messages: dataPromises[9]?.messages,
134
+ messages: dataPromises[8]?.messages,
138
135
  assignedTo: [...assignedusers, ...assignedroles],
139
- material: dataPromises[10],
140
- project: dataPromises[11],
136
+ material: dataPromises[9],
137
+ project: dataPromises[10],
141
138
  };
142
139
  });
143
140
  return await Promise.all(ticketDataPromises);
@@ -265,28 +262,6 @@ async function getTicketSource(ticket) {
265
262
  .equalTo("ticket", ticket)
266
263
  .first({ useMasterKey: true });
267
264
  }
268
- /**
269
- * Fetches the daily schedule for a ticket
270
- * @param ticket
271
- * @param ticketIds
272
- */
273
- async function getDailySchedule(ticket) {
274
- const schedules = await new Parse.Query(types_1.Maintenance_DailySchedule)
275
- .include("tickets")
276
- .matchesQuery("tickets", new Parse.Query(types_1.Maintenance_DailySchedule).matchesQuery("tickets", new Parse.Query(types_1.Maintenance_Ticket).equalTo("objectId", ticket.id)))
277
- .limit(1000000)
278
- .find({ useMasterKey: true });
279
- const scheduleTickets = await Promise.all(schedules.map(async (schedule) => {
280
- return {
281
- schedule,
282
- tickets: await schedule
283
- .get("tickets")
284
- .query()
285
- .find({ useMasterKey: true }),
286
- };
287
- }));
288
- return scheduleTickets.find((scheduleTicket) => scheduleTicket.tickets.some((t) => t.id === ticket.id))?.schedule;
289
- }
290
265
  /**
291
266
  * Used to filter tickets based on the filterBy attribute
292
267
  */
@@ -1,9 +1,4 @@
1
- export type Material = {
2
- id: string | number;
3
- name: string;
4
- quantity: number;
5
- unit: string;
6
- };
1
+ import { Material } from "../features/openservice";
7
2
  export declare function init(): Promise<void>;
8
3
  export declare function ticketMaterialToString(material: Material): string;
9
4
  export declare function ticketMaterialItemListToString(materials: Material[]): string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "3.0.8",
3
+ "version": "3.0.9",
4
4
  "description": "Parse Server Cloud Code for open.INC Stack.",
5
5
  "packageManager": "pnpm@10.8.1",
6
6
  "keywords": [
@@ -55,7 +55,8 @@
55
55
  "predevstart": "./setup_scripts/installDeps.sh",
56
56
  "devstart": "parse-server ./config.js",
57
57
  "featuremap": "node ./scripts/create-featuremap.js",
58
- "hooks": "node ./scripts/create-hooks.js"
58
+ "hooks": "node ./scripts/create-hooks.js",
59
+ "rebuild:docker": "cd ./docker-dev && powershell -NoProfile -ExecutionPolicy Bypass -File rebuild_and_restart.ps1"
59
60
  },
60
61
  "dependencies": {
61
62
  "@breejs/ts-worker": "^2.0.0",