@openinc/parse-server-opendash 2.4.100 → 2.4.102

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.
@@ -1,11 +1,11 @@
1
1
  import { Maintenance_Downtime, Maintenance_Frequency, Maintenance_Priority, Maintenance_Restriction, Maintenance_Ticket, Maintenance_Ticket_Issuecategory, Maintenance_Ticket_Kanban_State, Maintenance_Ticket_Source } from "../types";
2
2
  export type OpenWareTicketObject = {
3
3
  ticket: Maintenance_Ticket;
4
- priority: Maintenance_Priority | undefined;
5
- downtime: Maintenance_Downtime | undefined;
6
- frequency: Maintenance_Frequency | undefined;
7
- restriction: Maintenance_Restriction | undefined;
8
- issuecategory: Maintenance_Ticket_Issuecategory | undefined;
9
- state: Maintenance_Ticket_Kanban_State | undefined;
4
+ priority: Maintenance_Priority | Number;
5
+ downtime: Maintenance_Downtime | Number;
6
+ frequency: Maintenance_Frequency | Number;
7
+ restriction: Maintenance_Restriction | Number;
8
+ issuecategory: Maintenance_Ticket_Issuecategory | String;
9
+ state: Maintenance_Ticket_Kanban_State | String;
10
10
  source: Maintenance_Ticket_Source;
11
11
  };
@@ -53,6 +53,7 @@
53
53
  "OD3_Maintenance_Message_Body": "MAINTENANCE",
54
54
  "OD3_Maintenance_Order": "MAINTENANCE",
55
55
  "OD3_Maintenance_Priority": "MAINTENANCE",
56
+ "OD3_Maintenance_Project": "MAINTENANCE",
56
57
  "OD3_Maintenance_Restriction": "MAINTENANCE",
57
58
  "OD3_Maintenance_Schedule_Execution": "MAINTENANCE",
58
59
  "OD3_Maintenance_Schedule_Execution_Step": "MAINTENANCE",
@@ -66,6 +67,7 @@
66
67
  "OD3_Maintenance_Ticket_Kanban_State": "MAINTENANCE",
67
68
  "OD3_Maintenance_Ticket_Kanban_State_Current": "MAINTENANCE",
68
69
  "OD3_Maintenance_Ticket_Material": "MAINTENANCE",
70
+ "OD3_Maintenance_Ticket_Project": "MAINTENANCE",
69
71
  "OD3_Maintenance_Ticket_Source": "MAINTENANCE",
70
72
  "OD3_Maintenance_Ticket_Title": "MAINTENANCE",
71
73
  "OD3_MES_Article": "MONITORING",
@@ -1,5 +1,5 @@
1
- import { _User, Maintenance_Ticket } from "../types";
2
1
  import { Material } from "../hooks/Maintenance_Ticket_Material";
2
+ import { _User, Maintenance_Ticket } from "../types";
3
3
  export type MessageData = {
4
4
  type?: "userinput" | "system";
5
5
  translation?: {
@@ -38,6 +38,7 @@ type Values = {
38
38
  state?: string;
39
39
  dailySchedule?: string;
40
40
  material?: Material[];
41
+ project?: string;
41
42
  };
42
43
  export declare function getUsername(user: _User | undefined): string;
43
44
  export declare function init(name: string): Promise<void>;
@@ -55,12 +55,12 @@ async function saveTicketData(data, user) {
55
55
  const ticket = await getTicketObject(data, user, fetchOptions);
56
56
  const owticketobj = {
57
57
  ticket: ticket,
58
- priority: undefined,
59
- downtime: undefined,
60
- restriction: undefined,
61
- frequency: undefined,
62
- issuecategory: undefined,
63
- state: undefined,
58
+ priority: 0,
59
+ downtime: 0,
60
+ restriction: 0,
61
+ frequency: 0,
62
+ issuecategory: "",
63
+ state: "",
64
64
  source: new types_1.Maintenance_Ticket_Source(),
65
65
  };
66
66
  // needs to be the first save to save a message before data change messages are created on ticket creation
@@ -78,23 +78,75 @@ async function saveTicketData(data, user) {
78
78
  const savedpriority = await savePriority(ticket, data.priority, fetchOptions);
79
79
  owticketobj.priority = savedpriority;
80
80
  }
81
+ else {
82
+ //Fetch last value so it won't publish a 0 value to openware and overwrite the last value with default 0
83
+ const [lastPriorityError, lastPriority] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Priority)
84
+ .equalTo("ticket", ticket)
85
+ .descending("createdAt")
86
+ .first(fetchOptions));
87
+ if (lastPriorityError) {
88
+ console.log("Error fetching last priority", lastPriorityError);
89
+ }
90
+ else {
91
+ owticketobj.priority = lastPriority?.get("value") ?? 0;
92
+ }
93
+ }
81
94
  if (data.downtime !== undefined) {
82
95
  const saveddowntime = await saveDowntime(ticket, data.downtime, fetchOptions);
83
96
  owticketobj.downtime = saveddowntime;
84
97
  }
98
+ else {
99
+ //Fetch last value so it won't publish a 0 value to openware and overwrite the last value with default 0
100
+ const [lastDowntimeError, lastDowntime] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Downtime)
101
+ .equalTo("ticket", ticket)
102
+ .descending("createdAt")
103
+ .first(fetchOptions));
104
+ if (lastDowntimeError) {
105
+ console.log("Error fetching last downtime", lastDowntimeError);
106
+ }
107
+ else {
108
+ owticketobj.downtime = lastDowntime?.get("value") ?? 0;
109
+ }
110
+ }
85
111
  if (data.frequency !== undefined) {
86
112
  const savedfrequency = await saveFrequency(ticket, data.frequency, fetchOptions);
87
113
  owticketobj.frequency = savedfrequency;
88
114
  }
115
+ else {
116
+ //Fetch last value so it won't publish a 0 value to openware and overwrite the last value with default 0
117
+ const [lastFrequencyError, lastFrequency] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Frequency)
118
+ .equalTo("ticket", ticket)
119
+ .descending("createdAt")
120
+ .first(fetchOptions));
121
+ if (lastFrequencyError) {
122
+ console.log("Error fetching last frequency", lastFrequencyError);
123
+ }
124
+ else {
125
+ owticketobj.frequency = lastFrequency?.get("value") ?? 0;
126
+ }
127
+ }
89
128
  if (data.restriction !== undefined) {
90
129
  const savedrestriction = await saveRestriction(ticket, data.restriction, fetchOptions);
91
130
  owticketobj.restriction = savedrestriction;
92
131
  }
132
+ else {
133
+ //Fetch last value so it won't publish a 0 value to openware and overwrite the last value with default 0
134
+ const [lastRestrictionError, lastRestriction] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Restriction)
135
+ .equalTo("ticket", ticket)
136
+ .descending("createdAt")
137
+ .first(fetchOptions));
138
+ if (lastRestrictionError) {
139
+ console.log("Error fetching last restriction", lastRestrictionError);
140
+ }
141
+ else {
142
+ owticketobj.restriction = lastRestriction?.get("value") ?? 0;
143
+ }
144
+ }
93
145
  if (data.issuecategory) {
94
146
  const savedissuecategory = await saveIssueCategory(ticket, data.issuecategory, fetchOptions);
95
147
  const [fetchedSavedIssuecategoryError, fetchedSavedIssuecategory] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Ticket_Issuecategory)
96
148
  .include("issuecategory")
97
- .get(savedissuecategory.id));
149
+ .get(savedissuecategory.id, fetchOptions));
98
150
  if (fetchedSavedIssuecategoryError) {
99
151
  console.log("Error fetching saved issue category", fetchedSavedIssuecategoryError);
100
152
  }
@@ -106,7 +158,7 @@ async function saveTicketData(data, user) {
106
158
  const savedstate = await saveState(ticket, data.state, fetchOptions);
107
159
  const [fetchedSavedStateError, fetchedSavedState] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Ticket_Kanban_State)
108
160
  .include("state")
109
- .get(savedstate.id));
161
+ .get(savedstate.id, fetchOptions));
110
162
  if (fetchedSavedStateError) {
111
163
  console.log("Error fetching saved state", fetchedSavedStateError);
112
164
  }
@@ -118,6 +170,8 @@ async function saveTicketData(data, user) {
118
170
  await saveMedia(ticket, data.media, fetchOptions);
119
171
  if (data.material)
120
172
  await saveMaterial(ticket, data.material, fetchOptions);
173
+ if (data.project)
174
+ await saveTicketProject(ticket, data.project, fetchOptions);
121
175
  // save defaults
122
176
  if (!data.issuecategory && !data.existingTicketId)
123
177
  await saveDefaultIssueCategory(ticket, fetchOptions);
@@ -139,7 +193,9 @@ async function saveTicketData(data, user) {
139
193
  else if (ticketsource && ticketsource.get("source")) {
140
194
  owticketobj.source = ticketsource;
141
195
  // publish to openware
142
- await publishToOpenWare(owticketobj, ticket, ticketsource.get("source").id);
196
+ await publishToOpenWare(owticketobj, ticket, ticketsource.get("source").get("tag")
197
+ ? ticketsource.get("source").get("tag")
198
+ : "");
143
199
  }
144
200
  return ticket;
145
201
  }
@@ -152,90 +208,112 @@ async function publishToOpenWare(owticketobj, ticket, source) {
152
208
  const time = new Date().getTime();
153
209
  const values = {
154
210
  date: time,
155
- value: Object.values(owticketobj)
156
- .map((value) => {
157
- if (value instanceof types_1.Maintenance_Downtime) {
158
- return value.get("value");
211
+ value: Object.entries(owticketobj).map(([key, value]) => {
212
+ if (key === "downtime") {
213
+ if (value instanceof types_1.Maintenance_Downtime) {
214
+ return value.get("value");
215
+ }
216
+ return value;
159
217
  }
160
- else if (value instanceof types_1.Maintenance_Frequency) {
161
- return value.get("value");
218
+ else if (key === "frequency") {
219
+ if (value instanceof types_1.Maintenance_Frequency) {
220
+ return value.get("value");
221
+ }
222
+ return value;
162
223
  }
163
- else if (value instanceof types_1.Maintenance_Priority) {
164
- return value.get("value");
224
+ else if (key === "priority") {
225
+ if (value instanceof types_1.Maintenance_Priority) {
226
+ return value.get("value");
227
+ }
228
+ return value;
165
229
  }
166
- else if (value instanceof types_1.Maintenance_Restriction) {
167
- return value.get("value");
230
+ else if (key === "restriction") {
231
+ if (value instanceof types_1.Maintenance_Restriction) {
232
+ return value.get("value");
233
+ }
234
+ return value;
168
235
  }
169
- else if (value instanceof types_1.Maintenance_Ticket_Issuecategory) {
170
- return value.get("issuecategory").id;
236
+ else if (key === "issuecategory") {
237
+ if (value instanceof types_1.Maintenance_Ticket_Issuecategory) {
238
+ return value.get("issuecategory").id;
239
+ }
240
+ return value;
171
241
  }
172
- else if (value instanceof types_1.Maintenance_Ticket_Kanban_State) {
173
- return value.get("state").id;
242
+ else if (key === "state") {
243
+ if (value instanceof types_1.Maintenance_Ticket_Kanban_State) {
244
+ return value.get("state").id;
245
+ }
246
+ return value;
174
247
  }
175
- else if (value instanceof types_1.Maintenance_Ticket) {
176
- return value.id;
248
+ else if (key === "ticket") {
249
+ if (value instanceof types_1.Maintenance_Ticket) {
250
+ return value.id;
251
+ }
252
+ return value;
177
253
  }
178
- else if (value instanceof types_1.Maintenance_Ticket_Source) {
179
- return value.get("source").id;
254
+ else if (key === "source") {
255
+ if (value instanceof types_1.Maintenance_Ticket_Source) {
256
+ return value.get("source").id;
257
+ }
258
+ return value;
180
259
  }
181
- return undefined;
182
- })
183
- .filter((v) => v !== undefined),
260
+ return value;
261
+ }),
184
262
  };
185
- const valueTypes = Object.entries(owticketobj).map(([key, value]) => {
263
+ const valueTypes = Object.keys(owticketobj).map((key) => {
186
264
  const tmpvaluetype = {
187
265
  name: "",
188
266
  unit: "",
189
267
  type: "String",
190
268
  };
191
- if (value instanceof types_1.Maintenance_Downtime) {
192
- tmpvaluetype.name = types_1.Maintenance_Downtime.className;
269
+ if (key === "downtime") {
270
+ tmpvaluetype.name = types_1.Maintenance_Downtime.className.replace("OD3_Maintenance_", "");
193
271
  tmpvaluetype.unit = "%";
194
272
  tmpvaluetype.type = "Number";
195
273
  }
196
- else if (value instanceof types_1.Maintenance_Frequency) {
197
- tmpvaluetype.name = types_1.Maintenance_Frequency.className;
274
+ else if (key === "frequency") {
275
+ tmpvaluetype.name = types_1.Maintenance_Frequency.className.replace("OD3_Maintenance_", "");
198
276
  tmpvaluetype.unit = "%";
199
277
  tmpvaluetype.type = "Number";
200
278
  }
201
- else if (value instanceof types_1.Maintenance_Priority) {
202
- tmpvaluetype.name = types_1.Maintenance_Priority.className;
279
+ else if (key === "priority") {
280
+ tmpvaluetype.name = types_1.Maintenance_Priority.className.replace("OD3_Maintenance_", "");
203
281
  tmpvaluetype.unit = "%";
204
282
  tmpvaluetype.type = "Number";
205
283
  }
206
- else if (value instanceof types_1.Maintenance_Restriction) {
207
- tmpvaluetype.name = types_1.Maintenance_Restriction.className;
284
+ else if (key === "restriction") {
285
+ tmpvaluetype.name = types_1.Maintenance_Restriction.className.replace("OD3_Maintenance_", "");
208
286
  tmpvaluetype.unit = "%";
209
287
  tmpvaluetype.type = "Number";
210
288
  }
211
- else if (value instanceof types_1.Maintenance_Ticket_Issuecategory) {
212
- tmpvaluetype.name = types_1.Maintenance_Ticket_Issuecategory.className;
289
+ else if (key === "issuecategory") {
290
+ tmpvaluetype.name = types_1.Maintenance_Ticket_Issuecategory.className.replace("OD3_Maintenance_", "");
213
291
  tmpvaluetype.unit = "";
214
292
  tmpvaluetype.type = "String";
215
293
  }
216
- else if (value instanceof types_1.Maintenance_Ticket_Kanban_State) {
217
- tmpvaluetype.name = types_1.Maintenance_Ticket_Kanban_State.className;
294
+ else if (key === "state") {
295
+ tmpvaluetype.name = types_1.Maintenance_Ticket_Kanban_State.className.replace("OD3_Maintenance_", "");
218
296
  tmpvaluetype.unit = "";
219
297
  tmpvaluetype.type = "String";
220
298
  }
221
- else if (value instanceof types_1.Maintenance_Ticket) {
222
- tmpvaluetype.name = types_1.Maintenance_Ticket.className;
299
+ else if (key === "ticket") {
300
+ tmpvaluetype.name = types_1.Maintenance_Ticket.className.replace("OD3_Maintenance_", "");
223
301
  tmpvaluetype.unit = "";
224
302
  tmpvaluetype.type = "String";
225
303
  }
226
- else if (value instanceof types_1.Maintenance_Ticket_Source) {
227
- tmpvaluetype.name = types_1.Maintenance_Ticket_Source.className;
304
+ else if (key === "source") {
305
+ tmpvaluetype.name = types_1.Maintenance_Ticket_Source.className.replace("OD3_Maintenance_", "");
228
306
  tmpvaluetype.unit = "";
229
307
  tmpvaluetype.type = "String";
230
308
  }
231
309
  return tmpvaluetype;
232
310
  });
233
311
  const dataitem = {
234
- id: "openservice_ticket",
235
- name: `Ticket`,
312
+ id: `openservice_ticket_${ticket.id}`,
313
+ name: `Ticket ${owticketobj.ticket.get("title")}`,
236
314
  source: source,
237
315
  values: [values],
238
- valueTypes: valueTypes.filter((v) => v.name !== ""),
316
+ valueTypes: valueTypes,
239
317
  meta: {},
240
318
  };
241
319
  console.log("Publishing ticket to openware: ", dataitem, "with values", JSON.stringify(dataitem.values));
@@ -283,8 +361,6 @@ async function assignUsersAndRoles(ticket, assignedTo, fetchOptions, assigningUs
283
361
  .find(fetchOptions);
284
362
  ticket.relation("assignedusers").remove(assignedUsers);
285
363
  ticket.relation("assignedroles").remove(assignedroles);
286
- await ticket.save(null, fetchOptions);
287
- await ticket.save(null, fetchOptions);
288
364
  const assignments = [];
289
365
  const batchTime = new Date();
290
366
  const ids = assignedTo.map((a) => a.id);
@@ -296,6 +372,7 @@ async function assignUsersAndRoles(ticket, assignedTo, fetchOptions, assigningUs
296
372
  .find(fetchOptions);
297
373
  ticket.relation("assignedusers").add(newUsers);
298
374
  ticket.relation("assignedroles").add(newRoles);
375
+ await ticket.save(null, fetchOptions);
299
376
  if (newRoles.length === 0 && newUsers.length === 0) {
300
377
  assignments.push(new types_1.Maintenance_Ticket_Assignment({
301
378
  ticket,
@@ -550,6 +627,22 @@ async function saveMaterial(ticket, material, fetchOptions) {
550
627
  });
551
628
  await materialObject.save(null, fetchOptions);
552
629
  }
630
+ async function saveTicketProject(ticket, project, fetchOptions) {
631
+ const projectObj = await new Parse.Query(types_1.Maintenance_Project).get(project, fetchOptions);
632
+ if (!projectObj)
633
+ throw new Error("Project not found");
634
+ const ticketProjectObject = new types_1.Maintenance_Ticket_Project({
635
+ ticket,
636
+ project: projectObj,
637
+ tenant: ticket.get("tenant"),
638
+ user: ticket.get("user"),
639
+ });
640
+ await ticketProjectObject.save(null, fetchOptions);
641
+ ticket.set("project", projectObj);
642
+ await ticket.save(null, fetchOptions);
643
+ projectObj.relation("tickets").add(ticket);
644
+ await projectObj.save(null, fetchOptions);
645
+ }
553
646
  async function saveDefaultIssueCategory(ticket, fetchOptions) {
554
647
  const catchAll = await new Parse.Query(types_1.Maintenance_Issuecategory)
555
648
  .equalTo("catchall", true)
@@ -1,6 +1,6 @@
1
1
  import { Maintenance_Ticket, Maintenance_Ticket_Material, Maintenance_Ticket_Source } from "../types";
2
2
  type FilterParams = {
3
- attribute: "objectId" | "state" | "issuecategory" | "user" | "role" | "userRole" | "createdUser" | "source";
3
+ attribute: "objectId" | "state" | "issuecategory" | "user" | "role" | "userRole" | "createdUser" | "source" | "project";
4
4
  /**
5
5
  * the objectId of the attribute to filter by
6
6
  */
@@ -19,7 +19,9 @@ async function handleRequest(request) {
19
19
  try {
20
20
  const queries = [];
21
21
  for await (const config of request.params.config) {
22
- let ticketQuery = new Parse.Query(types_1.Maintenance_Ticket).equalTo("enabled", true);
22
+ let ticketQuery = new Parse.Query(types_1.Maintenance_Ticket)
23
+ .equalTo("enabled", true)
24
+ .includeAll();
23
25
  // apply filters defined in the filterQueryMap depending on the request
24
26
  if (config.filterBy?.filter.length) {
25
27
  const filterQueries = [];
@@ -106,6 +108,7 @@ async function getTicketData(tickets) {
106
108
  const dailySchedule = getDailySchedule(ticket);
107
109
  const messages = getMessages(ticket);
108
110
  const material = getTicketMaterial(ticket);
111
+ const project = ticket.get("project")?.fetch({ useMasterKey: true });
109
112
  const dataPromises = await Promise.all([
110
113
  downtimes,
111
114
  duedate,
@@ -118,6 +121,7 @@ async function getTicketData(tickets) {
118
121
  dailySchedule,
119
122
  messages,
120
123
  material,
124
+ project,
121
125
  ]);
122
126
  return {
123
127
  ticket: ticket,
@@ -133,6 +137,7 @@ async function getTicketData(tickets) {
133
137
  messages: dataPromises[9]?.messages,
134
138
  assignedTo: [...assignedusers, ...assignedroles],
135
139
  material: dataPromises[10],
140
+ project: dataPromises[11],
136
141
  };
137
142
  });
138
143
  return await Promise.all(ticketDataPromises);
@@ -334,6 +339,10 @@ const filterQueryMap = {
334
339
  query.include("user");
335
340
  query.equalTo("user", new Parse.User({ objectId: value }));
336
341
  },
342
+ project: async (query, value) => {
343
+ query.include("project");
344
+ query.equalTo("project", new types_1.Maintenance_Project({ objectId: value }));
345
+ },
337
346
  };
338
347
  /**
339
348
  * Creates a distinct array based on the getId function and can afterwards filter the array
@@ -1,4 +1,4 @@
1
- import { Maintenance_Ticket, Maintenance_DailySchedule, Maintenance_Downtime, Maintenance_Duedate, Maintenance_Frequency, Maintenance_Issuecategory, Maintenance_Kanban_State, Maintenance_Message, Maintenance_Priority, Maintenance_Restriction, Source, Maintenance_Ticket_Material } from "../types";
1
+ import { Maintenance_Ticket, Maintenance_DailySchedule, Maintenance_Downtime, Maintenance_Duedate, Maintenance_Frequency, Maintenance_Issuecategory, Maintenance_Kanban_State, Maintenance_Message, Maintenance_Priority, Maintenance_Restriction, Source, Maintenance_Ticket_Material, Maintenance_Project } from "../types";
2
2
  export type TicketData = {
3
3
  ticket: Maintenance_Ticket;
4
4
  dailySchedule?: Maintenance_DailySchedule;
@@ -13,4 +13,5 @@ export type TicketData = {
13
13
  source?: Source;
14
14
  assignedTo?: Array<Parse.User | Parse.Role>;
15
15
  material?: Maintenance_Ticket_Material;
16
+ project?: Maintenance_Project;
16
17
  };
@@ -40,6 +40,10 @@ export declare class MessageTranslationKeys {
40
40
  TITLE: string;
41
41
  CONTENT: string;
42
42
  };
43
+ PROJECT: {
44
+ TITLE: string;
45
+ CONTENT: string;
46
+ };
43
47
  };
44
48
  static MACHINELOG: {
45
49
  TITLE: {
@@ -86,5 +90,9 @@ export declare class MessageTranslationKeys {
86
90
  TITLE: string;
87
91
  CONTENT: string;
88
92
  };
93
+ PROJECT: {
94
+ TITLE: string;
95
+ CONTENT: string;
96
+ };
89
97
  };
90
98
  }
@@ -45,6 +45,10 @@ MessageTranslationKeys.TICKETLOG = {
45
45
  TITLE: "maintenance:ticket.message.material.changed.title",
46
46
  CONTENT: "maintenance:ticket.message.material.changed.content",
47
47
  },
48
+ PROJECT: {
49
+ TITLE: "maintenance:ticket.message.project.changed.title",
50
+ CONTENT: "maintenance:ticket.message.project.changed.content",
51
+ },
48
52
  };
49
53
  MessageTranslationKeys.MACHINELOG = {
50
54
  TITLE: {
@@ -91,4 +95,8 @@ MessageTranslationKeys.MACHINELOG = {
91
95
  TITLE: "maintenance:machinelog.message.material.changed.title",
92
96
  CONTENT: "maintenance:machinelog.message.material.changed.content",
93
97
  },
98
+ PROJECT: {
99
+ TITLE: "maintenance:machinelog.message.project.changed.title",
100
+ CONTENT: "maintenance:machinelog.message.project.changed.content",
101
+ },
94
102
  };
@@ -112,6 +112,7 @@ async function convertTicketDataToMessages() {
112
112
  await ticketDuedateToMessage(timeMap);
113
113
  await ticketTitleToMessage(timeMap);
114
114
  await ticketMaterialToMessage(timeMap);
115
+ await ticketProjectToMessage(timeMap);
115
116
  }
116
117
  async function convertToMessage(config) {
117
118
  const entries = await new Parse.Query(config.className)
@@ -473,6 +474,24 @@ async function ticketTitleToMessage(timeMap) {
473
474
  isValueValid: (entry) => !!entry.get("title"),
474
475
  });
475
476
  }
477
+ async function ticketProjectToMessage(timeMap) {
478
+ console.log("=================================");
479
+ console.log("Creating ticket project messages");
480
+ console.log("=================================");
481
+ await convertToMessage({
482
+ className: types_1.Maintenance_Ticket_Project.className,
483
+ timeMap: timeMap,
484
+ ticketTranslation: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.PROJECT,
485
+ machinelogTranslation: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.PROJECT,
486
+ getTranslationData: (entry, prev) => {
487
+ return {
488
+ old: prev?.get("project")?.get("name") ?? "Nicht vorhanden",
489
+ new: entry.get("project")?.get("name") ?? "Nicht vorhanden",
490
+ };
491
+ },
492
+ isValueValid: (entry) => !!entry.get("ticket"),
493
+ });
494
+ }
476
495
  async function convertScheduleExecutionToMessage() {
477
496
  console.log("=================================");
478
497
  console.log("Creating schedule execution messages");
@@ -0,0 +1 @@
1
+ export declare function init(): Promise<void>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.init = init;
4
+ const __1 = require("..");
5
+ const types_1 = require("../types");
6
+ async function init() {
7
+ (0, __1.beforeSaveHook)(types_1.Maintenance_Project, async (request) => {
8
+ const { object, original, user } = request;
9
+ await (0, __1.defaultHandler)(request);
10
+ await (0, __1.defaultAclHandler)(request);
11
+ // TODO
12
+ });
13
+ (0, __1.afterSaveHook)(types_1.Maintenance_Project, async (request) => {
14
+ const { object, original, user } = request;
15
+ // TODO
16
+ });
17
+ }
@@ -0,0 +1 @@
1
+ export declare function init(): Promise<void>;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.init = init;
4
+ const __1 = require("..");
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 TranslationKeys_1 = require("../helper/TranslationKeys");
8
+ const types_1 = require("../types");
9
+ const TRANSLATION_TITLE = TranslationKeys_1.MessageTranslationKeys.TICKETLOG.PROJECT.TITLE;
10
+ const TRANSLATION_CONTENT = TranslationKeys_1.MessageTranslationKeys.TICKETLOG.PROJECT.CONTENT;
11
+ const TRANSLATION_TITLE_MACHINELOG = TranslationKeys_1.MessageTranslationKeys.MACHINELOG.PROJECT.TITLE;
12
+ const TRANSLATION_CONTENT_MACHINELOG = TranslationKeys_1.MessageTranslationKeys.MACHINELOG.PROJECT.CONTENT;
13
+ async function init() {
14
+ (0, __1.beforeSaveHook)(types_1.Maintenance_Ticket_Project, async (request) => {
15
+ const { object, original, user } = request;
16
+ await (0, __1.defaultHandler)(request);
17
+ await (0, __1.defaultAclHandler)(request);
18
+ });
19
+ (0, __1.afterSaveHook)(types_1.Maintenance_Ticket_Project, async (request) => {
20
+ const { object, original, user } = request;
21
+ const fullObj = await object.fetchWithInclude(["ticket", "project"], {
22
+ useMasterKey: true,
23
+ });
24
+ const previous = await new Parse.Query(types_1.Maintenance_Ticket_Project)
25
+ .includeAll()
26
+ .equalTo("ticket", fullObj.get("ticket"))
27
+ .notEqualTo("objectId", fullObj.id)
28
+ .descending("createdAt")
29
+ .first({ useMasterKey: true });
30
+ await createMessageLog(fullObj, previous, user);
31
+ });
32
+ }
33
+ async function createMessageLog(object, previous, user) {
34
+ new types_1.Maintenance_Message({
35
+ referencedObjectId: object.get("ticket")?.id,
36
+ classname: object.get("ticket")?.className,
37
+ title: TRANSLATION_TITLE,
38
+ content: TRANSLATION_CONTENT,
39
+ user,
40
+ tenant: user.get("tenant"),
41
+ data: {
42
+ origin: {
43
+ id: object.id,
44
+ classname: object.className,
45
+ },
46
+ translation: {
47
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(user),
48
+ ticket: object.get("ticket")?.get("title") ?? "Nicht vorhanden",
49
+ new: object.get("project")?.get("name") ?? "Nicht vorhanden",
50
+ },
51
+ type: "system",
52
+ },
53
+ }).save(null, { useMasterKey: true });
54
+ const source = (await (0, openinc_openservice_ticket_data_1.getTicketSource)(object.get("ticket")))?.get("source");
55
+ if (source) {
56
+ new types_1.Maintenance_Message({
57
+ referencedObjectId: source?.id,
58
+ classname: source.className,
59
+ title: TRANSLATION_TITLE_MACHINELOG,
60
+ content: TRANSLATION_CONTENT_MACHINELOG,
61
+ user,
62
+ tenant: user.get("tenant"),
63
+ data: {
64
+ origin: {
65
+ id: object.get("ticket")?.id,
66
+ classname: object.get("ticket")?.className,
67
+ },
68
+ translation: {
69
+ username: (0, openinc_openservice_save_ticket_data_1.getUsername)(user),
70
+ ticket: object.get("ticket")?.get("title") ?? "Nicht vorhanden",
71
+ new: object.get("project")?.get("name") ?? "Nicht vorhanden",
72
+ old: previous?.get("project")?.get("name") ?? "Nicht vorhanden",
73
+ },
74
+ type: "system",
75
+ },
76
+ }).save(null, { useMasterKey: true });
77
+ }
78
+ }
package/dist/index.js CHANGED
@@ -176,10 +176,14 @@ async function initDefaultData() {
176
176
  }
177
177
  }
178
178
  async function initPermissions() {
179
- const tenant = await new Parse.Query(types_1.Tenant)
179
+ const tenants = await new Parse.Query(types_1.Tenant)
180
180
  .descending("createdAt")
181
- .first({ useMasterKey: true });
182
- tenant && (await registerPermissions(tenant));
181
+ .find({ useMasterKey: true });
182
+ if (tenants) {
183
+ for await (const tenant of tenants) {
184
+ await registerPermissions(tenant);
185
+ }
186
+ }
183
187
  }
184
188
  /**
185
189
  * Register all permissions in the database, if not already registered.
@@ -189,6 +193,7 @@ async function registerPermissions(tenant) {
189
193
  (0, registerPermissions_1.getAllPermissions)().forEach((permission) => {
190
194
  new Parse.Query(types_1.Permission)
191
195
  .equalTo("key", permission.key)
196
+ .equalTo("tenant", tenant)
192
197
  .first({ useMasterKey: true })
193
198
  .then((result) => {
194
199
  if (!result) {
@@ -196,14 +201,10 @@ async function registerPermissions(tenant) {
196
201
  const newPermission = new types_1.Permission();
197
202
  newPermission.set("key", permission.key);
198
203
  newPermission.set("label", permission.label);
204
+ newPermission.set("tenant", tenant);
199
205
  newPermission.set("description", permission.description);
200
206
  newPermission.save({}, { useMasterKey: true });
201
207
  }
202
- else if (result.get("tenant") === undefined) {
203
- console.log("Update permission tenant to default tenant", permission.key);
204
- result.set("tenant", tenant);
205
- result.save({}, { useMasterKey: true });
206
- }
207
208
  else {
208
209
  console.log("Permission already exists", permission.key);
209
210
  }
@@ -0,0 +1,47 @@
1
+ import type { Maintenance_Ticket } from "./Maintenance_Ticket";
2
+ import type { Tenant } from "./Tenant";
3
+ import type { _Role } from "./_Role";
4
+ import type { _User } from "./_User";
5
+ export interface Maintenance_ProjectAttributes {
6
+ id: string;
7
+ objectId: string;
8
+ createdAt: Date;
9
+ updatedAt: Date;
10
+ assignedRoles: Parse.Relation<Maintenance_Project, _Role>;
11
+ assignedUsers: Parse.Relation<Maintenance_Project, _User>;
12
+ color?: string;
13
+ description: string;
14
+ end?: Date;
15
+ icon?: string;
16
+ name: string;
17
+ parent?: Maintenance_Project;
18
+ start?: Date;
19
+ tenant?: Tenant;
20
+ tickets: Parse.Relation<Maintenance_Project, Maintenance_Ticket>;
21
+ user?: _User;
22
+ }
23
+ export declare class Maintenance_Project extends Parse.Object<Maintenance_ProjectAttributes> {
24
+ static className: string;
25
+ constructor(data?: Partial<Maintenance_ProjectAttributes>);
26
+ get assignedRoles(): Parse.Relation<Maintenance_Project, _Role>;
27
+ get assignedUsers(): Parse.Relation<Maintenance_Project, _User>;
28
+ get color(): string | undefined;
29
+ set color(value: string | undefined);
30
+ get description(): string;
31
+ set description(value: string);
32
+ get end(): Date | undefined;
33
+ set end(value: Date | undefined);
34
+ get icon(): string | undefined;
35
+ set icon(value: string | undefined);
36
+ get name(): string;
37
+ set name(value: string);
38
+ get parent(): Maintenance_Project | undefined;
39
+ set parent(value: Maintenance_Project | undefined);
40
+ get start(): Date | undefined;
41
+ set start(value: Date | undefined);
42
+ get tenant(): Tenant | undefined;
43
+ set tenant(value: Tenant | undefined);
44
+ get tickets(): Parse.Relation<Maintenance_Project, Maintenance_Ticket>;
45
+ get user(): _User | undefined;
46
+ set user(value: _User | undefined);
47
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Maintenance_Project = void 0;
4
+ class Maintenance_Project extends Parse.Object {
5
+ constructor(data) {
6
+ super("OD3_Maintenance_Project", data);
7
+ }
8
+ get assignedRoles() {
9
+ return super.relation("assignedRoles");
10
+ }
11
+ get assignedUsers() {
12
+ return super.relation("assignedUsers");
13
+ }
14
+ get color() {
15
+ return super.get("color");
16
+ }
17
+ set color(value) {
18
+ super.set("color", value);
19
+ }
20
+ get description() {
21
+ return super.get("description");
22
+ }
23
+ set description(value) {
24
+ super.set("description", value);
25
+ }
26
+ get end() {
27
+ return super.get("end");
28
+ }
29
+ set end(value) {
30
+ super.set("end", value);
31
+ }
32
+ get icon() {
33
+ return super.get("icon");
34
+ }
35
+ set icon(value) {
36
+ super.set("icon", value);
37
+ }
38
+ get name() {
39
+ return super.get("name");
40
+ }
41
+ set name(value) {
42
+ super.set("name", value);
43
+ }
44
+ get parent() {
45
+ return super.get("parent");
46
+ }
47
+ set parent(value) {
48
+ super.set("parent", value);
49
+ }
50
+ get start() {
51
+ return super.get("start");
52
+ }
53
+ set start(value) {
54
+ super.set("start", value);
55
+ }
56
+ get tenant() {
57
+ return super.get("tenant");
58
+ }
59
+ set tenant(value) {
60
+ super.set("tenant", value);
61
+ }
62
+ get tickets() {
63
+ return super.relation("tickets");
64
+ }
65
+ get user() {
66
+ return super.get("user");
67
+ }
68
+ set user(value) {
69
+ super.set("user", value);
70
+ }
71
+ }
72
+ exports.Maintenance_Project = Maintenance_Project;
73
+ Maintenance_Project.className = "OD3_Maintenance_Project";
74
+ Parse.Object.registerSubclass("OD3_Maintenance_Project", Maintenance_Project);
@@ -1,4 +1,5 @@
1
1
  import type { Maintenance_DailySchedule } from "./Maintenance_DailySchedule";
2
+ import type { Maintenance_Project } from "./Maintenance_Project";
2
3
  import type { Tenant } from "./Tenant";
3
4
  import type { _Role } from "./_Role";
4
5
  import type { _User } from "./_User";
@@ -13,6 +14,7 @@ export interface Maintenance_TicketAttributes {
13
14
  enabled: boolean;
14
15
  id_old?: string;
15
16
  latestPriorityValue?: number;
17
+ project?: Maintenance_Project;
16
18
  tenant?: Tenant;
17
19
  title?: string;
18
20
  user?: _User;
@@ -30,6 +32,8 @@ export declare class Maintenance_Ticket extends Parse.Object<Maintenance_TicketA
30
32
  set id_old(value: string | undefined);
31
33
  get latestPriorityValue(): number | undefined;
32
34
  set latestPriorityValue(value: number | undefined);
35
+ get project(): Maintenance_Project | undefined;
36
+ set project(value: Maintenance_Project | undefined);
33
37
  get tenant(): Tenant | undefined;
34
38
  set tenant(value: Tenant | undefined);
35
39
  get title(): string | undefined;
@@ -35,6 +35,12 @@ class Maintenance_Ticket extends Parse.Object {
35
35
  set latestPriorityValue(value) {
36
36
  super.set("latestPriorityValue", value);
37
37
  }
38
+ get project() {
39
+ return super.get("project");
40
+ }
41
+ set project(value) {
42
+ super.set("project", value);
43
+ }
38
44
  get tenant() {
39
45
  return super.get("tenant");
40
46
  }
@@ -0,0 +1,26 @@
1
+ import type { Maintenance_Project } from "./Maintenance_Project";
2
+ import type { Maintenance_Ticket } from "./Maintenance_Ticket";
3
+ import type { Tenant } from "./Tenant";
4
+ import type { _User } from "./_User";
5
+ export interface Maintenance_Ticket_ProjectAttributes {
6
+ id: string;
7
+ objectId: string;
8
+ createdAt: Date;
9
+ updatedAt: Date;
10
+ project?: Maintenance_Project;
11
+ tenant?: Tenant;
12
+ ticket?: Maintenance_Ticket;
13
+ user?: _User;
14
+ }
15
+ export declare class Maintenance_Ticket_Project extends Parse.Object<Maintenance_Ticket_ProjectAttributes> {
16
+ static className: string;
17
+ constructor(data?: Partial<Maintenance_Ticket_ProjectAttributes>);
18
+ get project(): Maintenance_Project | undefined;
19
+ set project(value: Maintenance_Project | undefined);
20
+ get tenant(): Tenant | undefined;
21
+ set tenant(value: Tenant | undefined);
22
+ get ticket(): Maintenance_Ticket | undefined;
23
+ set ticket(value: Maintenance_Ticket | undefined);
24
+ get user(): _User | undefined;
25
+ set user(value: _User | undefined);
26
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Maintenance_Ticket_Project = void 0;
4
+ class Maintenance_Ticket_Project extends Parse.Object {
5
+ constructor(data) {
6
+ super("OD3_Maintenance_Ticket_Project", data);
7
+ }
8
+ get project() {
9
+ return super.get("project");
10
+ }
11
+ set project(value) {
12
+ super.set("project", value);
13
+ }
14
+ get tenant() {
15
+ return super.get("tenant");
16
+ }
17
+ set tenant(value) {
18
+ super.set("tenant", value);
19
+ }
20
+ get ticket() {
21
+ return super.get("ticket");
22
+ }
23
+ set ticket(value) {
24
+ super.set("ticket", value);
25
+ }
26
+ get user() {
27
+ return super.get("user");
28
+ }
29
+ set user(value) {
30
+ super.set("user", value);
31
+ }
32
+ }
33
+ exports.Maintenance_Ticket_Project = Maintenance_Ticket_Project;
34
+ Maintenance_Ticket_Project.className = "OD3_Maintenance_Ticket_Project";
35
+ Parse.Object.registerSubclass("OD3_Maintenance_Ticket_Project", Maintenance_Ticket_Project);
@@ -116,6 +116,8 @@ export { Maintenance_Order } from "./Maintenance_Order";
116
116
  export type { Maintenance_OrderAttributes } from "./Maintenance_Order";
117
117
  export { Maintenance_Priority } from "./Maintenance_Priority";
118
118
  export type { Maintenance_PriorityAttributes } from "./Maintenance_Priority";
119
+ export { Maintenance_Project } from "./Maintenance_Project";
120
+ export type { Maintenance_ProjectAttributes } from "./Maintenance_Project";
119
121
  export { Maintenance_Restriction } from "./Maintenance_Restriction";
120
122
  export type { Maintenance_RestrictionAttributes } from "./Maintenance_Restriction";
121
123
  export { Maintenance_Schedule_Execution } from "./Maintenance_Schedule_Execution";
@@ -142,6 +144,8 @@ export { Maintenance_Ticket_Kanban_State_Current } from "./Maintenance_Ticket_Ka
142
144
  export type { Maintenance_Ticket_Kanban_State_CurrentAttributes } from "./Maintenance_Ticket_Kanban_State_Current";
143
145
  export { Maintenance_Ticket_Material } from "./Maintenance_Ticket_Material";
144
146
  export type { Maintenance_Ticket_MaterialAttributes } from "./Maintenance_Ticket_Material";
147
+ export { Maintenance_Ticket_Project } from "./Maintenance_Ticket_Project";
148
+ export type { Maintenance_Ticket_ProjectAttributes } from "./Maintenance_Ticket_Project";
145
149
  export { Maintenance_Ticket_Source } from "./Maintenance_Ticket_Source";
146
150
  export type { Maintenance_Ticket_SourceAttributes } from "./Maintenance_Ticket_Source";
147
151
  export { Maintenance_Ticket_Title } from "./Maintenance_Ticket_Title";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Maintenance_Duedate = exports.Maintenance_Downtime = exports.Maintenance_DailySchedule = exports.MailTemplate = exports.ML_DataSelection = exports.MIAAS_MDSEndpoint = exports.MES_OrderPlan = exports.MES_Order = exports.MES_Article = exports.Log = exports.Language = exports.Knowledge_Video = exports.Knowledge_DocumentPage = exports.Knowledge_Document = exports.Knowledge_ChatMessage = exports.Knowledge_Chat = exports.Knowledge_Category = exports.Knowledge_Article = exports.GTFS_Wheelchair_Boarding = exports.GTFS_Wheelchair_Accessible = exports.GTFS_Trip = exports.GTFS_Stop_Times = exports.GTFS_Stop = exports.GTFS_Route_Type = exports.GTFS_Route = exports.GTFS_Location_Type = exports.GTFS_Level = exports.GTFS_Direction = exports.GTFS_Calendar = exports.GTFS_Bikes_Allowed = exports.GTFS_Agency = exports.Documentation_Document = exports.Documentation_Category = exports.Dashboard = exports.Core_Token = exports.Core_Email = exports.Contact = exports.Config = exports.Company = exports.BDE_Unit = exports.BDE_Result = exports.BDE_Page = exports.BDE_ListEntry = exports.BDE_List = exports.BDE_Form = exports.Attachment = exports.Assets = exports.AlarmWebhook = exports.AlarmAction = exports.Alarm = void 0;
4
- exports.WidgetPreset = exports.Widget = exports.WebPush = exports.VirtualKPI = exports.User_Setting = exports.UserData = exports.TenantTrustedDomain = exports.TenantMeta = exports.Tenant = exports.SourceMeta = exports.Source = exports.Share = exports.Report = exports.Push = exports.Permission = exports.Notification_Setting = exports.Notification = exports.NavigationItem = exports.NavigationGroup = exports.Monitoring_Slideshow = exports.Monitoring_ReportImage = exports.Monitoring_ParseTableSensor = exports.Monitoring_Jobs = exports.Monitoring_DataHierachies = exports.Maintenance_Ticket_Title = exports.Maintenance_Ticket_Source = exports.Maintenance_Ticket_Material = exports.Maintenance_Ticket_Kanban_State_Current = exports.Maintenance_Ticket_Kanban_State = exports.Maintenance_Ticket_Issuecategory = exports.Maintenance_Ticket_Assignment = exports.Maintenance_Ticket = exports.Maintenance_Source_File = exports.Maintenance_SourceMeta = exports.Maintenance_Schedule_Template = exports.Maintenance_Schedule_Step = exports.Maintenance_Schedule_Execution_Step = exports.Maintenance_Schedule_Execution = exports.Maintenance_Restriction = exports.Maintenance_Priority = exports.Maintenance_Order = exports.Maintenance_Message_Body = exports.Maintenance_Message = exports.Maintenance_Media = exports.Maintenance_Kanban_State = exports.Maintenance_Item = exports.Maintenance_Issuecategory = exports.Maintenance_Frequency = void 0;
4
+ exports.WidgetPreset = exports.Widget = exports.WebPush = exports.VirtualKPI = exports.User_Setting = exports.UserData = exports.TenantTrustedDomain = exports.TenantMeta = exports.Tenant = exports.SourceMeta = exports.Source = exports.Share = exports.Report = exports.Push = exports.Permission = exports.Notification_Setting = exports.Notification = exports.NavigationItem = exports.NavigationGroup = exports.Monitoring_Slideshow = exports.Monitoring_ReportImage = exports.Monitoring_ParseTableSensor = exports.Monitoring_Jobs = exports.Monitoring_DataHierachies = exports.Maintenance_Ticket_Title = exports.Maintenance_Ticket_Source = exports.Maintenance_Ticket_Project = exports.Maintenance_Ticket_Material = exports.Maintenance_Ticket_Kanban_State_Current = exports.Maintenance_Ticket_Kanban_State = exports.Maintenance_Ticket_Issuecategory = exports.Maintenance_Ticket_Assignment = exports.Maintenance_Ticket = exports.Maintenance_Source_File = exports.Maintenance_SourceMeta = exports.Maintenance_Schedule_Template = exports.Maintenance_Schedule_Step = exports.Maintenance_Schedule_Execution_Step = exports.Maintenance_Schedule_Execution = exports.Maintenance_Restriction = exports.Maintenance_Project = exports.Maintenance_Priority = exports.Maintenance_Order = exports.Maintenance_Message_Body = exports.Maintenance_Message = exports.Maintenance_Media = exports.Maintenance_Kanban_State = exports.Maintenance_Item = exports.Maintenance_Issuecategory = exports.Maintenance_Frequency = void 0;
5
5
  var Alarm_1 = require("./Alarm");
6
6
  Object.defineProperty(exports, "Alarm", { enumerable: true, get: function () { return Alarm_1.Alarm; } });
7
7
  var AlarmAction_1 = require("./AlarmAction");
@@ -120,6 +120,8 @@ var Maintenance_Order_1 = require("./Maintenance_Order");
120
120
  Object.defineProperty(exports, "Maintenance_Order", { enumerable: true, get: function () { return Maintenance_Order_1.Maintenance_Order; } });
121
121
  var Maintenance_Priority_1 = require("./Maintenance_Priority");
122
122
  Object.defineProperty(exports, "Maintenance_Priority", { enumerable: true, get: function () { return Maintenance_Priority_1.Maintenance_Priority; } });
123
+ var Maintenance_Project_1 = require("./Maintenance_Project");
124
+ Object.defineProperty(exports, "Maintenance_Project", { enumerable: true, get: function () { return Maintenance_Project_1.Maintenance_Project; } });
123
125
  var Maintenance_Restriction_1 = require("./Maintenance_Restriction");
124
126
  Object.defineProperty(exports, "Maintenance_Restriction", { enumerable: true, get: function () { return Maintenance_Restriction_1.Maintenance_Restriction; } });
125
127
  var Maintenance_Schedule_Execution_1 = require("./Maintenance_Schedule_Execution");
@@ -146,6 +148,8 @@ var Maintenance_Ticket_Kanban_State_Current_1 = require("./Maintenance_Ticket_Ka
146
148
  Object.defineProperty(exports, "Maintenance_Ticket_Kanban_State_Current", { enumerable: true, get: function () { return Maintenance_Ticket_Kanban_State_Current_1.Maintenance_Ticket_Kanban_State_Current; } });
147
149
  var Maintenance_Ticket_Material_1 = require("./Maintenance_Ticket_Material");
148
150
  Object.defineProperty(exports, "Maintenance_Ticket_Material", { enumerable: true, get: function () { return Maintenance_Ticket_Material_1.Maintenance_Ticket_Material; } });
151
+ var Maintenance_Ticket_Project_1 = require("./Maintenance_Ticket_Project");
152
+ Object.defineProperty(exports, "Maintenance_Ticket_Project", { enumerable: true, get: function () { return Maintenance_Ticket_Project_1.Maintenance_Ticket_Project; } });
149
153
  var Maintenance_Ticket_Source_1 = require("./Maintenance_Ticket_Source");
150
154
  Object.defineProperty(exports, "Maintenance_Ticket_Source", { enumerable: true, get: function () { return Maintenance_Ticket_Source_1.Maintenance_Ticket_Source; } });
151
155
  var Maintenance_Ticket_Title_1 = require("./Maintenance_Ticket_Title");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "2.4.100",
3
+ "version": "2.4.102",
4
4
  "description": "Parse Server Cloud Code for open.DASH",
5
5
  "packageManager": "pnpm@10.2.1",
6
6
  "keywords": [
@@ -0,0 +1,85 @@
1
+ {
2
+ "fields": {
3
+ "assignedRoles": {
4
+ "type": "Relation",
5
+ "targetClass": "_Role",
6
+ "required": false
7
+ },
8
+ "assignedUsers": {
9
+ "type": "Relation",
10
+ "targetClass": "_User",
11
+ "required": false
12
+ },
13
+ "color": {
14
+ "type": "String",
15
+ "required": false
16
+ },
17
+ "description": {
18
+ "type": "String",
19
+ "required": false,
20
+ "defaultValue": ""
21
+ },
22
+ "end": {
23
+ "type": "Date",
24
+ "required": false
25
+ },
26
+ "icon": {
27
+ "type": "String",
28
+ "required": false
29
+ },
30
+ "name": {
31
+ "type": "String",
32
+ "required": true
33
+ },
34
+ "parent": {
35
+ "type": "Pointer",
36
+ "targetClass": "{{PREFIX}}Maintenance_Project",
37
+ "required": false
38
+ },
39
+ "start": {
40
+ "type": "Date",
41
+ "required": false
42
+ },
43
+ "tenant": {
44
+ "type": "Pointer",
45
+ "targetClass": "{{PREFIX}}Tenant",
46
+ "required": false
47
+ },
48
+ "tickets": {
49
+ "type": "Relation",
50
+ "targetClass": "{{PREFIX}}Maintenance_Ticket",
51
+ "required": false
52
+ },
53
+ "user": {
54
+ "type": "Pointer",
55
+ "targetClass": "_User",
56
+ "required": false
57
+ }
58
+ },
59
+ "classLevelPermissions": {
60
+ "find": {
61
+ "*": true
62
+ },
63
+ "count": {
64
+ "*": true
65
+ },
66
+ "get": {
67
+ "*": true
68
+ },
69
+ "create": {
70
+ "*": true
71
+ },
72
+ "update": {
73
+ "*": true
74
+ },
75
+ "delete": {
76
+ "*": true
77
+ },
78
+ "addField": {
79
+ "*": true
80
+ },
81
+ "protectedFields": {
82
+ "*": []
83
+ }
84
+ }
85
+ }
@@ -28,6 +28,11 @@
28
28
  "type": "Number",
29
29
  "required": false
30
30
  },
31
+ "project": {
32
+ "type": "Pointer",
33
+ "targetClass": "{{PREFIX}}Maintenance_Project",
34
+ "required": false
35
+ },
31
36
  "tenant": {
32
37
  "type": "Pointer",
33
38
  "targetClass": "{{PREFIX}}Tenant",
@@ -0,0 +1,50 @@
1
+ {
2
+ "fields": {
3
+ "project": {
4
+ "type": "Pointer",
5
+ "targetClass": "{{PREFIX}}Maintenance_Project",
6
+ "required": false
7
+ },
8
+ "tenant": {
9
+ "type": "Pointer",
10
+ "targetClass": "{{PREFIX}}Tenant",
11
+ "required": false
12
+ },
13
+ "ticket": {
14
+ "type": "Pointer",
15
+ "targetClass": "{{PREFIX}}Maintenance_Ticket",
16
+ "required": false
17
+ },
18
+ "user": {
19
+ "type": "Pointer",
20
+ "targetClass": "_User",
21
+ "required": false
22
+ }
23
+ },
24
+ "classLevelPermissions": {
25
+ "find": {
26
+ "*": true
27
+ },
28
+ "count": {
29
+ "*": true
30
+ },
31
+ "get": {
32
+ "*": true
33
+ },
34
+ "create": {
35
+ "*": true
36
+ },
37
+ "update": {
38
+ "*": true
39
+ },
40
+ "delete": {
41
+ "*": true
42
+ },
43
+ "addField": {
44
+ "*": true
45
+ },
46
+ "protectedFields": {
47
+ "*": []
48
+ }
49
+ }
50
+ }