@openinc/parse-server-opendash 3.0.7 → 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.
- package/dist/features/openservice/functions/assignUsersAndRoles.d.ts +8 -0
- package/dist/features/openservice/functions/assignUsersAndRoles.js +168 -0
- package/dist/features/openservice/functions/getTicketObject.d.ts +4 -0
- package/dist/features/openservice/functions/getTicketObject.js +22 -0
- package/dist/features/openservice/functions/saveDowntime.d.ts +3 -0
- package/dist/features/openservice/functions/saveDowntime.js +23 -0
- package/dist/features/openservice/functions/saveDuedate.d.ts +8 -0
- package/dist/features/openservice/functions/saveDuedate.js +30 -0
- package/dist/features/openservice/functions/saveFrequency.d.ts +3 -0
- package/dist/features/openservice/functions/saveFrequency.js +23 -0
- package/dist/features/openservice/functions/saveIssuecategory.d.ts +4 -0
- package/dist/features/openservice/functions/saveIssuecategory.js +39 -0
- package/dist/features/openservice/functions/saveMaterial.d.ts +4 -0
- package/dist/features/openservice/functions/saveMaterial.js +13 -0
- package/dist/features/openservice/functions/saveMedia.d.ts +3 -0
- package/dist/features/openservice/functions/saveMedia.js +17 -0
- package/dist/features/openservice/functions/saveMessage.d.ts +5 -0
- package/dist/features/openservice/functions/saveMessage.js +66 -0
- package/dist/features/openservice/functions/savePriority.d.ts +3 -0
- package/dist/features/openservice/functions/savePriority.js +23 -0
- package/dist/features/openservice/functions/saveProject.d.ts +3 -0
- package/dist/features/openservice/functions/saveProject.js +39 -0
- package/dist/features/openservice/functions/saveRestriction.d.ts +3 -0
- package/dist/features/openservice/functions/saveRestriction.js +23 -0
- package/dist/features/openservice/functions/saveSource.d.ts +3 -0
- package/dist/features/openservice/functions/saveSource.js +23 -0
- package/dist/features/openservice/functions/saveState.d.ts +4 -0
- package/dist/features/openservice/functions/saveState.js +38 -0
- package/dist/features/openservice/functions/saveTicketTitle.d.ts +3 -0
- package/dist/features/openservice/functions/saveTicketTitle.js +19 -0
- package/dist/features/openservice/index.d.ts +19 -0
- package/dist/features/openservice/index.js +33 -1
- package/dist/features/openservice/types/FetchOptions.d.ts +4 -0
- package/dist/features/openservice/types/FetchOptions.js +2 -0
- package/dist/features/openservice/types/Material.d.ts +6 -0
- package/dist/features/openservice/types/Material.js +2 -0
- package/dist/features/openservice/types/MessageData.d.ts +15 -0
- package/dist/features/openservice/types/MessageData.js +2 -0
- package/dist/features/openservice/types/SaveValues.d.ts +26 -0
- package/dist/features/openservice/types/SaveValues.js +2 -0
- package/dist/features/openservice/types/TicketData.d.ts +1 -2
- package/dist/functions/openinc-openservice-save-ticket-data.d.ts +3 -44
- package/dist/functions/openinc-openservice-save-ticket-data.js +18 -405
- package/dist/functions/openinc-openservice-ticket-data.js +3 -28
- package/dist/hooks/Maintenance_Ticket_Material.d.ts +1 -6
- 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
|
|
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,387 +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
|
-
// create new message log
|
|
607
|
-
await new types_1.Maintenance_Message({
|
|
608
|
-
content: message.description,
|
|
609
|
-
referencedObjectId: ticket.id,
|
|
610
|
-
classname: types_1.Maintenance_Ticket.className,
|
|
611
|
-
tenant: ticket.get("tenant"),
|
|
612
|
-
user: ticket.get("user"),
|
|
613
|
-
title: message.title,
|
|
614
|
-
data: {
|
|
615
|
-
origin: { id: ticket.id, classname: ticket.className }, // default
|
|
616
|
-
...message.data,
|
|
617
|
-
},
|
|
618
|
-
}).save(null, fetchOptions);
|
|
619
|
-
// to machinelog
|
|
620
|
-
// if needed, this saves a message to the machinelog when a message is saved to the ticket
|
|
621
|
-
// this counts for user input and the ticket creation
|
|
622
|
-
// const source = values.source
|
|
623
|
-
// ? await new Parse.Query(Source).get(values.source, fetchOptions)
|
|
624
|
-
// : (await getTicketSource(ticket))?.get("source");
|
|
625
|
-
// if (source) {
|
|
626
|
-
// await new Maintenance_Message({
|
|
627
|
-
// referencedObjectId: source.id,
|
|
628
|
-
// classname: source.className,
|
|
629
|
-
// title: message.title,
|
|
630
|
-
// content: message.description,
|
|
631
|
-
// user: ticket.get("user"),
|
|
632
|
-
// tenant: ticket.get("tenant"),
|
|
633
|
-
// data: {
|
|
634
|
-
// type: "system",
|
|
635
|
-
// translation: {
|
|
636
|
-
// username: getUsername(ticket.get("user") as _User),
|
|
637
|
-
// old: "Nicht vorhanden",
|
|
638
|
-
// new: ticket.get("title"),
|
|
639
|
-
// ticketName: ticket.get("title"),
|
|
640
|
-
// },
|
|
641
|
-
// origin: {
|
|
642
|
-
// id: ticket.id,
|
|
643
|
-
// classname: ticket.className,
|
|
644
|
-
// },
|
|
645
|
-
// ...message.data,
|
|
646
|
-
// } as MessageData,
|
|
647
|
-
// }).save(null, fetchOptions);
|
|
648
|
-
// }
|
|
649
|
-
}
|
|
650
|
-
async function saveMaterial(ticket, material, fetchOptions) {
|
|
651
|
-
const materialObject = new types_1.Maintenance_Ticket_Material({
|
|
652
|
-
ticket,
|
|
653
|
-
itemList: material,
|
|
654
|
-
tenant: ticket.get("tenant"),
|
|
655
|
-
user: ticket.get("user"),
|
|
656
|
-
});
|
|
657
|
-
await materialObject.save(null, fetchOptions);
|
|
658
|
-
}
|
|
659
|
-
async function saveTicketProject(ticket, project, fetchOptions) {
|
|
660
|
-
// check if ticket already has a project assigned
|
|
661
|
-
// if so, remove the ticket from the old project
|
|
662
|
-
const prevProject = await ticket.get("project")?.fetch(fetchOptions);
|
|
663
|
-
if (prevProject && prevProject.id !== project) {
|
|
664
|
-
prevProject.relation("tickets").remove(ticket);
|
|
665
|
-
prevProject.save(null, fetchOptions);
|
|
666
|
-
}
|
|
667
|
-
const projectObj = await new Parse.Query(types_1.Maintenance_Project)
|
|
668
|
-
.equalTo("objectId", project)
|
|
669
|
-
.first(fetchOptions);
|
|
670
|
-
const ticketProjectObject = new types_1.Maintenance_Ticket_Project({
|
|
671
|
-
ticket,
|
|
672
|
-
project: projectObj,
|
|
673
|
-
tenant: ticket.get("tenant"),
|
|
674
|
-
user: ticket.get("user"),
|
|
675
|
-
});
|
|
676
|
-
await ticketProjectObject.save(null, fetchOptions);
|
|
677
|
-
ticket.set("project", projectObj);
|
|
678
|
-
await ticket.save(null, fetchOptions);
|
|
679
|
-
if (projectObj) {
|
|
680
|
-
projectObj.relation("tickets").add(ticket);
|
|
681
|
-
await projectObj.save(null, fetchOptions);
|
|
682
|
-
}
|
|
683
|
-
}
|
|
684
|
-
async function saveDefaultIssueCategory(ticket, fetchOptions) {
|
|
685
|
-
const catchAll = await new Parse.Query(types_1.Maintenance_Issuecategory)
|
|
686
|
-
.equalTo("catchall", true)
|
|
687
|
-
.first(fetchOptions);
|
|
688
|
-
if (!catchAll)
|
|
689
|
-
return;
|
|
690
|
-
const issueCategory = new types_1.Maintenance_Ticket_Issuecategory({
|
|
691
|
-
ticket,
|
|
692
|
-
issuecategory: catchAll,
|
|
693
|
-
tenant: ticket.get("tenant"),
|
|
694
|
-
user: ticket.get("user"),
|
|
695
|
-
});
|
|
696
|
-
await issueCategory.save(null, fetchOptions);
|
|
697
|
-
}
|
|
698
|
-
async function saveDefaultState(ticket, fetchOptions) {
|
|
699
|
-
const newState = await new Parse.Query(types_1.Maintenance_Kanban_State)
|
|
700
|
-
.equalTo("isInbox", true)
|
|
701
|
-
.first(fetchOptions);
|
|
702
|
-
if (!newState)
|
|
703
|
-
return;
|
|
704
|
-
const state = new types_1.Maintenance_Ticket_Kanban_State({
|
|
705
|
-
ticket,
|
|
706
|
-
state: newState,
|
|
707
|
-
tenant: ticket.get("tenant"),
|
|
708
|
-
user: ticket.get("user"),
|
|
709
|
-
});
|
|
710
|
-
await state.save(null, fetchOptions);
|
|
711
|
-
}
|
|
@@ -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
|
-
|
|
137
|
-
messages: dataPromises[9]?.messages,
|
|
134
|
+
messages: dataPromises[8]?.messages,
|
|
138
135
|
assignedTo: [...assignedusers, ...assignedroles],
|
|
139
|
-
material: dataPromises[
|
|
140
|
-
project: dataPromises[
|
|
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
|
-
|
|
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.
|
|
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",
|