@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
@@ -0,0 +1,8 @@
1
+ import { _User, Maintenance_Ticket } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ type Assignments = Array<{
4
+ type: "user" | "role";
5
+ id: string;
6
+ }>;
7
+ export declare function assignUsersAndRoles(ticket: Maintenance_Ticket, assignedTo: Assignments, fetchOptions: FetchOptions, assigningUser?: _User): Promise<void>;
8
+ export {};
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assignUsersAndRoles = assignUsersAndRoles;
4
+ const parse_1 = require("parse");
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");
7
+ const types_1 = require("../../../types");
8
+ async function assignUsersAndRoles(ticket, assignedTo, fetchOptions, assigningUser) {
9
+ const assignedUsers = (await ticket
10
+ .relation("assignedusers")
11
+ .query()
12
+ .find(fetchOptions));
13
+ const assignedroles = (await ticket
14
+ .relation("assignedroles")
15
+ .query()
16
+ .find(fetchOptions));
17
+ if (!hasChanged(assignedTo, assignedUsers, assignedroles))
18
+ return;
19
+ ticket.relation("assignedusers").remove(assignedUsers);
20
+ ticket.relation("assignedroles").remove(assignedroles);
21
+ const assignments = [];
22
+ const batchTime = new Date();
23
+ const ids = assignedTo.map((a) => a.id);
24
+ const newUsers = await new Parse.Query(parse_1.User)
25
+ .containedIn("objectId", ids)
26
+ .find(fetchOptions);
27
+ const newRoles = await new Parse.Query(parse_1.Role)
28
+ .containedIn("objectId", ids)
29
+ .find(fetchOptions);
30
+ ticket.relation("assignedusers").add(newUsers);
31
+ ticket.relation("assignedroles").add(newRoles);
32
+ await ticket.save(null, fetchOptions);
33
+ if (newRoles.length === 0 && newUsers.length === 0) {
34
+ assignments.push(new types_1.Maintenance_Ticket_Assignment({
35
+ ticket,
36
+ assignedUser: undefined,
37
+ assignedRole: undefined,
38
+ user: ticket.user,
39
+ tenant: ticket.tenant,
40
+ batchStamp: batchTime,
41
+ }));
42
+ }
43
+ for (const assignedTo of newUsers) {
44
+ assignments.push(new types_1.Maintenance_Ticket_Assignment({
45
+ ticket,
46
+ assignedUser: assignedTo,
47
+ tenant: ticket.get("tenant"),
48
+ user: ticket.get("user"),
49
+ batchStamp: batchTime,
50
+ }));
51
+ await new types_1.Notification({
52
+ data: {
53
+ ticketId: ticket.id,
54
+ translation: {
55
+ ticketName: ticket.get("title"),
56
+ ticketId: ticket.id,
57
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(assigningUser) ?? "System",
58
+ },
59
+ },
60
+ isSent: false,
61
+ title: "maintenance:ticket.assignuser.notification.title",
62
+ user: assignedTo,
63
+ description: "maintenance:ticket.assignuser.notification.description",
64
+ }).save(null, fetchOptions);
65
+ }
66
+ for (const assignedTo of newRoles) {
67
+ assignments.push(new types_1.Maintenance_Ticket_Assignment({
68
+ ticket,
69
+ assignedRole: assignedTo,
70
+ tenant: ticket.get("tenant"),
71
+ user: ticket.get("user"),
72
+ batchStamp: batchTime,
73
+ }));
74
+ const roleUsers = await assignedTo
75
+ .relation("users")
76
+ .query()
77
+ .find(fetchOptions);
78
+ for (const roleUser of roleUsers) {
79
+ await new types_1.Notification({
80
+ data: {
81
+ ticketId: ticket.id,
82
+ translation: {
83
+ ticketName: ticket.get("title"),
84
+ ticketId: ticket.id,
85
+ user: ticket.get("user")?.get("username"),
86
+ role: assignedTo.get("label"),
87
+ },
88
+ },
89
+ isSent: false,
90
+ title: "maintenance:ticket.assignrole.notification.title",
91
+ user: roleUser,
92
+ description: "maintenance:ticket.assignrole.notification.description",
93
+ }).save(null, fetchOptions);
94
+ }
95
+ }
96
+ await types_1.Maintenance_Ticket_Assignment.saveAll(assignments, fetchOptions);
97
+ //Set ACLs for assigned users and roles on ticket
98
+ const acl = new Parse.ACL();
99
+ for (const assignedUser of newUsers) {
100
+ acl.setReadAccess(assignedUser, true);
101
+ acl.setWriteAccess(assignedUser, true);
102
+ }
103
+ // get the parent roles of the assigned roles
104
+ const rolesWithParents = await addParentRoles(newRoles);
105
+ // remove duplicates from the array
106
+ const distinctRolesWithParents = (0, openinc_openservice_ticket_data_1.arrayToDistinct)(rolesWithParents, (obj) => obj.id);
107
+ for (const assignedRole of distinctRolesWithParents) {
108
+ acl.setRoleReadAccess(assignedRole, true);
109
+ acl.setRoleWriteAccess(assignedRole, true);
110
+ }
111
+ ticket.setACL(acl);
112
+ await ticket.save(null, fetchOptions);
113
+ // SAVE ASSIGNMENT MESSAGE
114
+ // set the content for the message
115
+ let content = "maintenance:ticket.eventlist.OD3_Maintenance_Ticket_Assignment.none";
116
+ if (newUsers.length > 0 && newRoles.length > 0)
117
+ content =
118
+ "maintenance:ticket.eventlist.OD3_Maintenance_Ticket_Assignment.both";
119
+ else if (newUsers.length > 0)
120
+ content =
121
+ "maintenance:ticket.eventlist.OD3_Maintenance_Ticket_Assignment.user";
122
+ else if (newRoles.length > 0)
123
+ content =
124
+ "maintenance:ticket.eventlist.OD3_Maintenance_Ticket_Assignment.role";
125
+ await new types_1.Maintenance_Message({
126
+ referencedObjectId: ticket.id,
127
+ classname: types_1.Maintenance_Ticket.className,
128
+ title: "maintenance:ticket.message.assignment.changed.title",
129
+ content,
130
+ user: ticket.get("user"),
131
+ tenant: ticket.get("tenant"),
132
+ data: {
133
+ type: "system",
134
+ translation: {
135
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(assigningUser),
136
+ userList: newUsers.map((u) => `'${u.get("username")}'`).join(", "),
137
+ roleList: newRoles.map((r) => `'${r.get("label")}'`).join(", "),
138
+ ticketName: ticket.get("title"),
139
+ },
140
+ origin: {
141
+ id: ticket.id,
142
+ classname: ticket.className,
143
+ },
144
+ },
145
+ }).save(null, fetchOptions);
146
+ await ticket.save(null, fetchOptions);
147
+ }
148
+ async function addParentRoles(roles) {
149
+ for (const role of roles) {
150
+ const roleQuery = new Parse.Query(parse_1.Role).equalTo("objectId", role.id);
151
+ const parentRoles = await new Parse.Query(parse_1.Role)
152
+ .matchesQuery("roles", roleQuery)
153
+ .find();
154
+ if (parentRoles.length > 0) {
155
+ roles.push(...(await addParentRoles(parentRoles)));
156
+ }
157
+ }
158
+ return roles;
159
+ }
160
+ function hasChanged(assignedTo, assignedUsers, assignedRoles) {
161
+ const assignedIds = [
162
+ ...assignedUsers.map((u) => u.id),
163
+ ...assignedRoles.map((r) => r.id),
164
+ ];
165
+ const newIds = assignedTo.map((a) => a.id);
166
+ return (assignedIds.length !== newIds.length ||
167
+ !newIds.every((id) => assignedIds.includes(id)));
168
+ }
@@ -0,0 +1,4 @@
1
+ import { _User, Maintenance_Ticket } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ import { SaveValues } from "../types/SaveValues";
4
+ export declare function getTicketObject(value: SaveValues, user: _User | undefined, fetchOptions: FetchOptions): Promise<Maintenance_Ticket>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTicketObject = getTicketObject;
4
+ const types_1 = require("../../../types");
5
+ async function getTicketObject(value, user, fetchOptions) {
6
+ if (value.existingTicketId) {
7
+ const ticket = await new Parse.Query(types_1.Maintenance_Ticket).get(value.existingTicketId, fetchOptions);
8
+ if (!ticket) {
9
+ throw new Error("Ticket not found");
10
+ }
11
+ if (value.title && ticket.get("title") !== value.title) {
12
+ ticket.set("title", value.title);
13
+ await ticket.save(null, fetchOptions);
14
+ }
15
+ return ticket;
16
+ }
17
+ return await new types_1.Maintenance_Ticket({
18
+ title: value.title,
19
+ user: user,
20
+ tenant: user?.get("tenant"),
21
+ }).save(null, fetchOptions);
22
+ }
@@ -0,0 +1,3 @@
1
+ import { Maintenance_Ticket, Maintenance_Downtime } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ export declare function saveDowntime(ticket: Maintenance_Ticket, value: number, fetchOptions: FetchOptions): Promise<Maintenance_Downtime>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveDowntime = saveDowntime;
4
+ const types_1 = require("../../../types");
5
+ async function saveDowntime(ticket, value, fetchOptions) {
6
+ const current = await getCurrent(ticket);
7
+ const changed = current?.get("value") !== value;
8
+ if (!changed)
9
+ return current;
10
+ const downtime = new types_1.Maintenance_Downtime({
11
+ ticket,
12
+ value: value,
13
+ tenant: ticket.get("tenant"),
14
+ user: ticket.get("user"),
15
+ });
16
+ return await downtime.save(null, fetchOptions);
17
+ }
18
+ async function getCurrent(ticket) {
19
+ return await new Parse.Query(types_1.Maintenance_Downtime)
20
+ .descending("createdAt")
21
+ .equalTo("ticket", ticket)
22
+ .first({ useMasterKey: true });
23
+ }
@@ -0,0 +1,8 @@
1
+ import { Maintenance_Ticket, Maintenance_Duedate } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ type DuedateValue = {
4
+ start?: Date;
5
+ end: Date;
6
+ };
7
+ export declare function saveDuedate(ticket: Maintenance_Ticket, duedate: DuedateValue, fetchOptions: FetchOptions): Promise<Maintenance_Duedate | undefined>;
8
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveDuedate = saveDuedate;
4
+ const types_1 = require("../../../types");
5
+ async function saveDuedate(ticket, duedate, fetchOptions) {
6
+ const current = await getCurrent(ticket);
7
+ const changed = await hasChanged(current, duedate);
8
+ if (!changed)
9
+ return current;
10
+ const dueDate = new types_1.Maintenance_Duedate({
11
+ ticket,
12
+ end: duedate.end,
13
+ start: duedate.start,
14
+ tenant: ticket.get("tenant"),
15
+ user: ticket.get("user"),
16
+ endformat: "DD.MM.YYYY",
17
+ startformat: "DD.MM.YYYY",
18
+ });
19
+ await dueDate.save(null, fetchOptions);
20
+ }
21
+ async function getCurrent(ticket) {
22
+ return await new Parse.Query(types_1.Maintenance_Duedate)
23
+ .equalTo("ticket", ticket)
24
+ .descending("createdAt")
25
+ .first({ useMasterKey: true });
26
+ }
27
+ async function hasChanged(current, duedate) {
28
+ return (current?.get("end") !== duedate.end ||
29
+ current?.get("start") !== duedate.start);
30
+ }
@@ -0,0 +1,3 @@
1
+ import { Maintenance_Ticket, Maintenance_Frequency } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ export declare function saveFrequency(ticket: Maintenance_Ticket, value: number, fetchOptions: FetchOptions): Promise<Maintenance_Frequency>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveFrequency = saveFrequency;
4
+ const types_1 = require("../../../types");
5
+ async function saveFrequency(ticket, value, fetchOptions) {
6
+ const current = await getCurrent(ticket);
7
+ const changed = current?.get("value") !== value;
8
+ if (!changed)
9
+ return current;
10
+ const frequency = new types_1.Maintenance_Frequency({
11
+ ticket,
12
+ value: value,
13
+ tenant: ticket.get("tenant"),
14
+ user: ticket.get("user"),
15
+ });
16
+ return await frequency.save(null, fetchOptions);
17
+ }
18
+ async function getCurrent(ticket) {
19
+ return await new Parse.Query(types_1.Maintenance_Frequency)
20
+ .descending("createdAt")
21
+ .equalTo("ticket", ticket)
22
+ .first({ useMasterKey: true });
23
+ }
@@ -0,0 +1,4 @@
1
+ import { Maintenance_Ticket, Maintenance_Ticket_Issuecategory } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ export declare function saveIssueCategory(ticket: Maintenance_Ticket, value: string, fetchOptions: FetchOptions): Promise<Maintenance_Ticket_Issuecategory>;
4
+ export declare function saveDefaultIssueCategory(ticket: Maintenance_Ticket, fetchOptions: FetchOptions): Promise<void>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveIssueCategory = saveIssueCategory;
4
+ exports.saveDefaultIssueCategory = saveDefaultIssueCategory;
5
+ const types_1 = require("../../../types");
6
+ async function saveIssueCategory(ticket, value, fetchOptions) {
7
+ const current = await getCurrent(ticket);
8
+ const changed = current?.get("issuecategory")?.id !== value;
9
+ if (!changed)
10
+ return current;
11
+ const issueCategory = new types_1.Maintenance_Ticket_Issuecategory({
12
+ ticket,
13
+ issuecategory: new types_1.Maintenance_Issuecategory({ objectId: value }), // pointer
14
+ tenant: ticket.get("tenant"),
15
+ user: ticket.get("user"),
16
+ });
17
+ return await issueCategory.save(null, fetchOptions);
18
+ }
19
+ async function saveDefaultIssueCategory(ticket, fetchOptions) {
20
+ const catchAll = await new Parse.Query(types_1.Maintenance_Issuecategory)
21
+ .equalTo("catchall", true)
22
+ .first(fetchOptions);
23
+ if (!catchAll)
24
+ return;
25
+ const issueCategory = new types_1.Maintenance_Ticket_Issuecategory({
26
+ ticket,
27
+ issuecategory: catchAll,
28
+ tenant: ticket.get("tenant"),
29
+ user: ticket.get("user"),
30
+ });
31
+ await issueCategory.save(null, fetchOptions);
32
+ }
33
+ async function getCurrent(ticket) {
34
+ return await new Parse.Query(types_1.Maintenance_Ticket_Issuecategory)
35
+ .descending("createdAt")
36
+ .equalTo("ticket", ticket)
37
+ .includeAll()
38
+ .first({ useMasterKey: true });
39
+ }
@@ -0,0 +1,4 @@
1
+ import { Maintenance_Ticket } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ import { Material } from "../types/Material";
4
+ export declare function saveMaterial(ticket: Maintenance_Ticket, material: Material[], fetchOptions: FetchOptions): Promise<void>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveMaterial = saveMaterial;
4
+ const types_1 = require("../../../types");
5
+ async function saveMaterial(ticket, material, fetchOptions) {
6
+ const materialObject = new types_1.Maintenance_Ticket_Material({
7
+ ticket,
8
+ itemList: material,
9
+ tenant: ticket.get("tenant"),
10
+ user: ticket.get("user"),
11
+ });
12
+ await materialObject.save(null, fetchOptions);
13
+ }
@@ -0,0 +1,3 @@
1
+ import { Maintenance_Ticket } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ export declare function saveMedia(ticket: Maintenance_Ticket, media: string[], fetchOptions: FetchOptions): Promise<void>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveMedia = saveMedia;
4
+ const types_1 = require("../../../types");
5
+ async function saveMedia(ticket, media, fetchOptions) {
6
+ const message = new types_1.Maintenance_Message({
7
+ referencedObjectId: ticket.id,
8
+ classname: types_1.Maintenance_Ticket.className,
9
+ data: { type: "media" },
10
+ tenant: ticket.get("tenant"),
11
+ user: ticket.get("user"),
12
+ });
13
+ message
14
+ .relation("media")
15
+ .add(media.map((m) => new types_1.Maintenance_Media({ objectId: m })));
16
+ await message.save(null, fetchOptions);
17
+ }
@@ -0,0 +1,5 @@
1
+ import { Maintenance_Ticket } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ import { MessageField } from "../types/MessageData";
4
+ import { SaveValues } from "../types/SaveValues";
5
+ export declare function saveMessage(ticket: Maintenance_Ticket, message: MessageField, fetchOptions: FetchOptions, values: SaveValues): Promise<void>;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveMessage = saveMessage;
4
+ const types_1 = require("../../../types");
5
+ async function saveMessage(ticket, message, fetchOptions, values) {
6
+ if (values.existingTicketId &&
7
+ message.title === "maintenance:ticket.update.message.title") {
8
+ const description = await new Parse.Query(types_1.Maintenance_Message)
9
+ .equalTo("referencedObjectId", ticket.id)
10
+ .equalTo("classname", types_1.Maintenance_Ticket.className)
11
+ .equalTo("title", "maintenance:ticket.create.database.subject.1")
12
+ .first(fetchOptions);
13
+ if (description) {
14
+ // dont do anything when description is the same
15
+ if (description.content === message.description)
16
+ return;
17
+ // update description
18
+ description.set("content", message.description);
19
+ await description.save(null, fetchOptions);
20
+ return;
21
+ }
22
+ }
23
+ // create new message log
24
+ await new types_1.Maintenance_Message({
25
+ content: message.description,
26
+ referencedObjectId: ticket.id,
27
+ classname: types_1.Maintenance_Ticket.className,
28
+ tenant: ticket.get("tenant"),
29
+ user: ticket.get("user"),
30
+ title: message.title,
31
+ data: {
32
+ origin: { id: ticket.id, classname: ticket.className }, // default
33
+ ...message.data,
34
+ },
35
+ }).save(null, fetchOptions);
36
+ // to machinelog
37
+ // if needed, this saves a message to the machinelog when a message is saved to the ticket
38
+ // this counts for user input and the ticket creation
39
+ // const source = values.source
40
+ // ? await new Parse.Query(Source).get(values.source, fetchOptions)
41
+ // : (await getTicketSource(ticket))?.get("source");
42
+ // if (source) {
43
+ // await new Maintenance_Message({
44
+ // referencedObjectId: source.id,
45
+ // classname: source.className,
46
+ // title: message.title,
47
+ // content: message.description,
48
+ // user: ticket.get("user"),
49
+ // tenant: ticket.get("tenant"),
50
+ // data: {
51
+ // type: "system",
52
+ // translation: {
53
+ // username: getUsername(ticket.get("user") as _User),
54
+ // old: "Nicht vorhanden",
55
+ // new: ticket.get("title"),
56
+ // ticketName: ticket.get("title"),
57
+ // },
58
+ // origin: {
59
+ // id: ticket.id,
60
+ // classname: ticket.className,
61
+ // },
62
+ // ...message.data,
63
+ // } as MessageData,
64
+ // }).save(null, fetchOptions);
65
+ // }
66
+ }
@@ -0,0 +1,3 @@
1
+ import { Maintenance_Priority, Maintenance_Ticket } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ export declare function savePriority(ticket: Maintenance_Ticket, value: number, fetchOptions: FetchOptions): Promise<Maintenance_Priority>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.savePriority = savePriority;
4
+ const types_1 = require("../../../types");
5
+ async function savePriority(ticket, value, fetchOptions) {
6
+ const current = await getCurrent(ticket);
7
+ const changed = current?.get("value") !== value;
8
+ if (!changed)
9
+ return current;
10
+ const priority = new types_1.Maintenance_Priority({
11
+ ticket,
12
+ value: value,
13
+ tenant: ticket.get("tenant"),
14
+ user: ticket.get("user"),
15
+ });
16
+ return await priority.save(null, fetchOptions);
17
+ }
18
+ async function getCurrent(ticket) {
19
+ return await new Parse.Query(types_1.Maintenance_Priority)
20
+ .descending("createdAt")
21
+ .equalTo("ticket", ticket)
22
+ .first({ useMasterKey: true });
23
+ }
@@ -0,0 +1,3 @@
1
+ import { Maintenance_Ticket, Maintenance_Ticket_Project } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ export declare function saveProject(ticket: Maintenance_Ticket, project: string, fetchOptions: FetchOptions): Promise<Maintenance_Ticket_Project | undefined>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveProject = saveProject;
4
+ const types_1 = require("../../../types");
5
+ async function saveProject(ticket, project, fetchOptions) {
6
+ const current = await getCurrent(ticket);
7
+ const changed = current?.get("project")?.id !== project;
8
+ if (!changed)
9
+ return current;
10
+ // check if ticket already has a project assigned
11
+ // if so, remove the ticket from the old project
12
+ const prevProject = await ticket.get("project")?.fetch(fetchOptions);
13
+ if (prevProject && prevProject.id !== project) {
14
+ prevProject.relation("tickets").remove(ticket);
15
+ prevProject.save(null, fetchOptions);
16
+ }
17
+ const projectObj = await new Parse.Query(types_1.Maintenance_Project)
18
+ .equalTo("objectId", project)
19
+ .first(fetchOptions);
20
+ const ticketProjectObject = new types_1.Maintenance_Ticket_Project({
21
+ ticket,
22
+ project: projectObj,
23
+ tenant: ticket.get("tenant"),
24
+ user: ticket.get("user"),
25
+ });
26
+ await ticketProjectObject.save(null, fetchOptions);
27
+ ticket.set("project", projectObj);
28
+ await ticket.save(null, fetchOptions);
29
+ if (projectObj) {
30
+ projectObj.relation("tickets").add(ticket);
31
+ await projectObj.save(null, fetchOptions);
32
+ }
33
+ }
34
+ async function getCurrent(ticket) {
35
+ return await new Parse.Query(types_1.Maintenance_Ticket_Project)
36
+ .descending("createdAt")
37
+ .equalTo("ticket", ticket)
38
+ .first({ useMasterKey: true });
39
+ }
@@ -0,0 +1,3 @@
1
+ import { Maintenance_Ticket, Maintenance_Restriction } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ export declare function saveRestriction(ticket: Maintenance_Ticket, value: number, fetchOptions: FetchOptions): Promise<Maintenance_Restriction>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveRestriction = saveRestriction;
4
+ const types_1 = require("../../../types");
5
+ async function saveRestriction(ticket, value, fetchOptions) {
6
+ const current = await getCurrent(ticket);
7
+ const changed = current?.get("value") !== value;
8
+ if (!changed)
9
+ return current;
10
+ const restriction = new types_1.Maintenance_Restriction({
11
+ ticket,
12
+ value: value,
13
+ tenant: ticket.get("tenant"),
14
+ user: ticket.get("user"),
15
+ });
16
+ return await restriction.save(null, fetchOptions);
17
+ }
18
+ async function getCurrent(ticket) {
19
+ return await new Parse.Query(types_1.Maintenance_Restriction)
20
+ .descending("createdAt")
21
+ .equalTo("ticket", ticket)
22
+ .first({ useMasterKey: true });
23
+ }
@@ -0,0 +1,3 @@
1
+ import { Maintenance_Ticket, Maintenance_Ticket_Source } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ export declare function saveSource(ticket: Maintenance_Ticket, source: string, fetchOptions: FetchOptions): Promise<Maintenance_Ticket_Source>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveSource = saveSource;
4
+ const types_1 = require("../../../types");
5
+ async function saveSource(ticket, source, fetchOptions) {
6
+ const current = await getCurrent(ticket);
7
+ const changed = current?.get("source")?.id !== source;
8
+ if (!changed)
9
+ return current;
10
+ const tSource = new types_1.Maintenance_Ticket_Source({
11
+ ticket,
12
+ source: new types_1.Source({ objectId: source }),
13
+ tenant: ticket.get("tenant"),
14
+ user: ticket.get("user"),
15
+ });
16
+ return await tSource.save(null, fetchOptions);
17
+ }
18
+ async function getCurrent(ticket) {
19
+ return await new Parse.Query(types_1.Maintenance_Ticket_Source)
20
+ .descending("createdAt")
21
+ .equalTo("ticket", ticket)
22
+ .first({ useMasterKey: true });
23
+ }
@@ -0,0 +1,4 @@
1
+ import { Maintenance_Ticket, Maintenance_Ticket_Kanban_State, Maintenance_Ticket_Kanban_State_Current } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ export declare function saveState(ticket: Maintenance_Ticket, state: string, fetchOptions: FetchOptions): Promise<Maintenance_Ticket_Kanban_State | Maintenance_Ticket_Kanban_State_Current>;
4
+ export declare function saveDefaultState(ticket: Maintenance_Ticket, fetchOptions: FetchOptions): Promise<void>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveState = saveState;
4
+ exports.saveDefaultState = saveDefaultState;
5
+ const types_1 = require("../../../types");
6
+ async function saveState(ticket, state, fetchOptions) {
7
+ const current = await getCurrent(ticket);
8
+ const changed = current?.get("state")?.id !== state;
9
+ if (!changed)
10
+ return current;
11
+ return await new types_1.Maintenance_Ticket_Kanban_State({
12
+ ticket,
13
+ state: new types_1.Maintenance_Kanban_State({ objectId: state }), // pointer
14
+ tenant: ticket.get("tenant"),
15
+ user: ticket.get("user"),
16
+ }).save(null, fetchOptions);
17
+ }
18
+ async function saveDefaultState(ticket, fetchOptions) {
19
+ const newState = await new Parse.Query(types_1.Maintenance_Kanban_State)
20
+ .equalTo("isInbox", true)
21
+ .first(fetchOptions);
22
+ if (!newState)
23
+ return;
24
+ const state = new types_1.Maintenance_Ticket_Kanban_State({
25
+ ticket,
26
+ state: newState,
27
+ tenant: ticket.get("tenant"),
28
+ user: ticket.get("user"),
29
+ });
30
+ await state.save(null, fetchOptions);
31
+ }
32
+ async function getCurrent(ticket) {
33
+ return await new Parse.Query(types_1.Maintenance_Ticket_Kanban_State_Current)
34
+ .descending("createdAt")
35
+ .equalTo("ticket", ticket)
36
+ .includeAll()
37
+ .first({ useMasterKey: true });
38
+ }
@@ -0,0 +1,3 @@
1
+ import { Maintenance_Ticket } from "../../../types";
2
+ import { FetchOptions } from "../types/FetchOptions";
3
+ export declare function saveTicketTitle(ticket: Maintenance_Ticket, fetchOptions: FetchOptions): Promise<void>;