@openinc/parse-server-opendash 3.7.0 → 3.9.0
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/saveDescription.d.ts +4 -0
- package/dist/features/openservice/functions/saveDescription.js +7 -0
- package/dist/features/openservice/functions/saveMessage.js +0 -17
- package/dist/features/openservice/index.d.ts +2 -0
- package/dist/features/openservice/index.js +5 -1
- package/dist/features/openservice/init.d.ts +1 -0
- package/dist/features/openservice/init.js +17 -0
- package/dist/features/openservice/kanbanState/initKanbanStates.d.ts +6 -0
- package/dist/features/openservice/kanbanState/initKanbanStates.js +111 -0
- package/dist/features/openservice/messages/initMessages.d.ts +5 -0
- package/dist/features/openservice/messages/initMessages.js +455 -0
- package/dist/features/openservice/messages/removeLatestMessage.d.ts +7 -0
- package/dist/features/openservice/messages/removeLatestMessage.js +24 -0
- package/dist/features/openservice/schedules/initScheduling.d.ts +6 -0
- package/dist/features/openservice/schedules/initScheduling.js +123 -0
- package/dist/features/openservice/ticket/initTicket.d.ts +2 -0
- package/dist/features/openservice/ticket/initTicket.js +50 -0
- package/dist/features/openservice/types/SaveValues.d.ts +1 -0
- package/dist/features/permissions/services/registerPermissions.js +10 -7
- package/dist/features/permissions/types/Permissions.d.ts +2 -2
- package/dist/features/permissions/types/Permissions.js +18 -17
- package/dist/functions/openinc-openservice-save-ticket-data.js +3 -1
- package/dist/hooks/Maintenance_Downtime.js +2 -2
- package/dist/hooks/Maintenance_Duedate.js +2 -2
- package/dist/hooks/Maintenance_Frequency.js +2 -2
- package/dist/hooks/Maintenance_Kanban_State.js +0 -10
- package/dist/hooks/Maintenance_Message.d.ts +0 -7
- package/dist/hooks/Maintenance_Message.js +0 -495
- package/dist/hooks/Maintenance_Priority.js +2 -2
- package/dist/hooks/Maintenance_Restriction.js +3 -3
- package/dist/hooks/Maintenance_Schedule_Template.js +2 -116
- package/dist/hooks/Maintenance_Ticket.js +0 -26
- package/dist/hooks/Maintenance_Ticket_Issuecategory.js +2 -2
- package/dist/hooks/Maintenance_Ticket_Kanban_State.js +2 -2
- package/dist/hooks/Maintenance_Ticket_Kanban_State_Current.js +0 -98
- package/dist/hooks/Maintenance_Ticket_Material.js +2 -2
- package/dist/hooks/Maintenance_Ticket_Source.js +2 -2
- package/dist/hooks/Maintenance_Ticket_Title.js +2 -2
- package/dist/index.js +3 -0
- package/dist/types/Maintenance_Ticket.d.ts +1 -0
- package/package.json +1 -1
- package/schema/Maintenance_Ticket.json +4 -0
- package/schema/Maintenance_Ticket_FormConfig.json +5 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Maintenance_Ticket } from "../../../types";
|
|
2
|
+
import { FetchOptions } from "../types/FetchOptions";
|
|
3
|
+
import { SaveValues } from "../types/SaveValues";
|
|
4
|
+
export declare function saveDescription(ticket: Maintenance_Ticket, data: SaveValues, fetchOptions: FetchOptions): Promise<void>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.saveDescription = saveDescription;
|
|
4
|
+
async function saveDescription(ticket, data, fetchOptions) {
|
|
5
|
+
ticket.set("description", data.description);
|
|
6
|
+
await ticket.save(null, fetchOptions);
|
|
7
|
+
}
|
|
@@ -3,23 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.saveMessage = saveMessage;
|
|
4
4
|
const types_1 = require("../../../types");
|
|
5
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
6
|
// create new message log
|
|
24
7
|
await new types_1.Maintenance_Message({
|
|
25
8
|
content: message.description,
|
|
@@ -16,7 +16,9 @@ export { saveState, saveDefaultState } from "./functions/saveState";
|
|
|
16
16
|
export { saveSource } from "./functions/saveSource";
|
|
17
17
|
export { saveProject } from "./functions/saveProject";
|
|
18
18
|
export { saveMessage } from "./functions/saveMessage";
|
|
19
|
+
export { saveDescription } from "./functions/saveDescription";
|
|
19
20
|
export { saveMedia } from "./functions/saveMedia";
|
|
20
21
|
export { saveTicketMeta } from "./functions/saveTicketMeta";
|
|
21
22
|
export { saveIssueCategory, saveDefaultIssueCategory, } from "./functions/saveIssuecategory";
|
|
22
23
|
export { getTicketObject } from "./functions/getTicketObject";
|
|
24
|
+
export { init } from "./init";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getTicketObject = exports.saveDefaultIssueCategory = exports.saveIssueCategory = exports.saveTicketMeta = exports.saveMedia = exports.saveMessage = exports.saveProject = exports.saveSource = exports.saveDefaultState = exports.saveState = exports.saveDuedate = exports.saveTicketTitle = exports.saveMaterial = exports.saveRestriction = exports.saveDowntime = exports.saveFrequency = exports.savePriority = exports.assignUsersAndRoles = exports.OpenserviceMessageTranslationKeys = void 0;
|
|
3
|
+
exports.init = exports.getTicketObject = exports.saveDefaultIssueCategory = exports.saveIssueCategory = exports.saveTicketMeta = exports.saveMedia = exports.saveDescription = exports.saveMessage = exports.saveProject = exports.saveSource = exports.saveDefaultState = exports.saveState = exports.saveDuedate = exports.saveTicketTitle = exports.saveMaterial = exports.saveRestriction = exports.saveDowntime = exports.saveFrequency = exports.savePriority = exports.assignUsersAndRoles = exports.OpenserviceMessageTranslationKeys = void 0;
|
|
4
4
|
var OpenserviceTranslationKeys_1 = require("./types/OpenserviceTranslationKeys");
|
|
5
5
|
Object.defineProperty(exports, "OpenserviceMessageTranslationKeys", { enumerable: true, get: function () { return OpenserviceTranslationKeys_1.OpenserviceMessageTranslationKeys; } });
|
|
6
6
|
var assignUsersAndRoles_1 = require("./functions/assignUsersAndRoles");
|
|
@@ -28,6 +28,8 @@ var saveProject_1 = require("./functions/saveProject");
|
|
|
28
28
|
Object.defineProperty(exports, "saveProject", { enumerable: true, get: function () { return saveProject_1.saveProject; } });
|
|
29
29
|
var saveMessage_1 = require("./functions/saveMessage");
|
|
30
30
|
Object.defineProperty(exports, "saveMessage", { enumerable: true, get: function () { return saveMessage_1.saveMessage; } });
|
|
31
|
+
var saveDescription_1 = require("./functions/saveDescription");
|
|
32
|
+
Object.defineProperty(exports, "saveDescription", { enumerable: true, get: function () { return saveDescription_1.saveDescription; } });
|
|
31
33
|
var saveMedia_1 = require("./functions/saveMedia");
|
|
32
34
|
Object.defineProperty(exports, "saveMedia", { enumerable: true, get: function () { return saveMedia_1.saveMedia; } });
|
|
33
35
|
var saveTicketMeta_1 = require("./functions/saveTicketMeta");
|
|
@@ -37,3 +39,5 @@ Object.defineProperty(exports, "saveIssueCategory", { enumerable: true, get: fun
|
|
|
37
39
|
Object.defineProperty(exports, "saveDefaultIssueCategory", { enumerable: true, get: function () { return saveIssuecategory_1.saveDefaultIssueCategory; } });
|
|
38
40
|
var getTicketObject_1 = require("./functions/getTicketObject");
|
|
39
41
|
Object.defineProperty(exports, "getTicketObject", { enumerable: true, get: function () { return getTicketObject_1.getTicketObject; } });
|
|
42
|
+
var init_1 = require("./init");
|
|
43
|
+
Object.defineProperty(exports, "init", { enumerable: true, get: function () { return init_1.init; } });
|
|
@@ -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 initKanbanStates_1 = require("./kanbanState/initKanbanStates");
|
|
5
|
+
const initMessages_1 = require("./messages/initMessages");
|
|
6
|
+
const initScheduling_1 = require("./schedules/initScheduling");
|
|
7
|
+
const initTicket_1 = require("./ticket/initTicket");
|
|
8
|
+
async function init() {
|
|
9
|
+
console.log("Initializing open.SERVICE feature...");
|
|
10
|
+
await (0, initMessages_1.initializeMessages)();
|
|
11
|
+
await (0, initKanbanStates_1.initCurrentTicketStates)();
|
|
12
|
+
await (0, initTicket_1.updateTicketDescription)();
|
|
13
|
+
await (0, initKanbanStates_1.initEnabledFlag)();
|
|
14
|
+
await (0, initScheduling_1.initScheduling)();
|
|
15
|
+
await (0, initTicket_1.initTicketClass)();
|
|
16
|
+
console.log("open.SERVICE feature initialized.");
|
|
17
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Initialize the current ticket states table. if a ticket has no entry in the current ticket states table, create one.
|
|
3
|
+
* If the ticket has no state, initialize it with the inbox state.
|
|
4
|
+
*/
|
|
5
|
+
export declare function initCurrentTicketStates(): Promise<void>;
|
|
6
|
+
export declare function initEnabledFlag(): Promise<void>;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initCurrentTicketStates = initCurrentTicketStates;
|
|
4
|
+
exports.initEnabledFlag = initEnabledFlag;
|
|
5
|
+
const types_1 = require("../../../types");
|
|
6
|
+
/**
|
|
7
|
+
* Initialize the current ticket states table. if a ticket has no entry in the current ticket states table, create one.
|
|
8
|
+
* If the ticket has no state, initialize it with the inbox state.
|
|
9
|
+
*/
|
|
10
|
+
async function initCurrentTicketStates() {
|
|
11
|
+
console.log("Initializing current ticket states table");
|
|
12
|
+
// Getting the tickets that have no entry in the current ticket states table (OD3_Maintenance_Ticket_Kanban_State_Current)
|
|
13
|
+
const ticketsWithoutEntry = await new Parse.Query(types_1.Maintenance_Ticket)
|
|
14
|
+
.doesNotMatchKeyInQuery("objectId",
|
|
15
|
+
//@ts-ignore
|
|
16
|
+
"ticket.objectId", new Parse.Query(types_1.Maintenance_Ticket_Kanban_State_Current).select("ticket"))
|
|
17
|
+
.find({ useMasterKey: true });
|
|
18
|
+
// for each ticket not in the table, create an entry
|
|
19
|
+
for (const ticket of ticketsWithoutEntry) {
|
|
20
|
+
const currentTicketState = await new Parse.Query(types_1.Maintenance_Ticket_Kanban_State)
|
|
21
|
+
.includeAll()
|
|
22
|
+
.equalTo("ticket", ticket)
|
|
23
|
+
.descending("createdAt")
|
|
24
|
+
.first({ useMasterKey: true });
|
|
25
|
+
const tenant = ticket.get("tenant");
|
|
26
|
+
const user = ticket.get("user");
|
|
27
|
+
if (tenant === undefined || user === undefined) {
|
|
28
|
+
console.error("Tenant or user is undefined for ticket", ticket.id);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
// if the ticket has a state, create an entry in the current ticket states table
|
|
32
|
+
if (currentTicketState) {
|
|
33
|
+
const newTicketState = new types_1.Maintenance_Ticket_Kanban_State_Current({
|
|
34
|
+
ticket: ticket,
|
|
35
|
+
ticketState: currentTicketState,
|
|
36
|
+
state: currentTicketState.get("state"),
|
|
37
|
+
tenant: tenant,
|
|
38
|
+
});
|
|
39
|
+
const acl = new Parse.ACL();
|
|
40
|
+
acl.setPublicReadAccess(false);
|
|
41
|
+
acl.setPublicWriteAccess(false);
|
|
42
|
+
acl.setRoleReadAccess("od-admin", true);
|
|
43
|
+
acl.setRoleWriteAccess("od-admin", true);
|
|
44
|
+
acl.setReadAccess(user.id, true);
|
|
45
|
+
acl.setWriteAccess(user.id, true);
|
|
46
|
+
acl.setRoleReadAccess(`od-tenant-user-${tenant.id}`, true);
|
|
47
|
+
acl.setRoleWriteAccess(`od-tenant-user-${tenant.id}`, true);
|
|
48
|
+
acl.setRoleReadAccess(`od-tenant-admin-${tenant.id}`, true);
|
|
49
|
+
acl.setRoleWriteAccess(`od-tenant-admin-${tenant.id}`, true);
|
|
50
|
+
newTicketState.setACL(acl);
|
|
51
|
+
await newTicketState.save(null, { useMasterKey: true });
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// if the ticket has no state, initialize it with the inbox state
|
|
55
|
+
const inboxState = await new Parse.Query(types_1.Maintenance_Kanban_State)
|
|
56
|
+
.equalTo("isInbox", true)
|
|
57
|
+
.first({ useMasterKey: true });
|
|
58
|
+
// saving the ticket state will automatically create an entry in the current ticket states table due to the afterSave-Hook
|
|
59
|
+
const newkanbanstate = new types_1.Maintenance_Ticket_Kanban_State({
|
|
60
|
+
ticket: ticket,
|
|
61
|
+
state: inboxState,
|
|
62
|
+
tenant: tenant,
|
|
63
|
+
user: user,
|
|
64
|
+
});
|
|
65
|
+
const acl = new Parse.ACL();
|
|
66
|
+
acl.setPublicReadAccess(false);
|
|
67
|
+
acl.setPublicWriteAccess(false);
|
|
68
|
+
acl.setRoleReadAccess("od-admin", true);
|
|
69
|
+
acl.setRoleWriteAccess("od-admin", true);
|
|
70
|
+
acl.setReadAccess(user.id, true);
|
|
71
|
+
acl.setWriteAccess(user.id, true);
|
|
72
|
+
acl.setRoleReadAccess(`od-tenant-user-${tenant.id}`, true);
|
|
73
|
+
acl.setRoleWriteAccess(`od-tenant-user-${tenant.id}`, true);
|
|
74
|
+
acl.setRoleReadAccess(`od-tenant-admin-${tenant.id}`, true);
|
|
75
|
+
acl.setRoleWriteAccess(`od-tenant-admin-${tenant.id}`, true);
|
|
76
|
+
newkanbanstate.setACL(acl);
|
|
77
|
+
const savedkanbanstate = await newkanbanstate.save(null, {
|
|
78
|
+
useMasterKey: true,
|
|
79
|
+
});
|
|
80
|
+
const currentTicketState = await new Parse.Query(types_1.Maintenance_Ticket_Kanban_State_Current)
|
|
81
|
+
.equalTo("ticket", savedkanbanstate.get("ticket"))
|
|
82
|
+
.first({ useMasterKey: true });
|
|
83
|
+
// if the ticket is already in the current state table, update it
|
|
84
|
+
if (currentTicketState) {
|
|
85
|
+
currentTicketState.set("ticketState", savedkanbanstate);
|
|
86
|
+
currentTicketState.set("state", savedkanbanstate.get("state"));
|
|
87
|
+
await currentTicketState.save(null, { useMasterKey: true });
|
|
88
|
+
}
|
|
89
|
+
// if the ticket is not in the current state table, create a new entry
|
|
90
|
+
else {
|
|
91
|
+
const newTicketState = new types_1.Maintenance_Ticket_Kanban_State_Current({
|
|
92
|
+
ticket: savedkanbanstate.get("ticket"),
|
|
93
|
+
ticketState: savedkanbanstate,
|
|
94
|
+
state: savedkanbanstate.get("state"),
|
|
95
|
+
tenant: savedkanbanstate.get("tenant"),
|
|
96
|
+
});
|
|
97
|
+
await newTicketState.save(null, { useMasterKey: true });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
console.log("Current ticket states table initialized");
|
|
102
|
+
}
|
|
103
|
+
async function initEnabledFlag() {
|
|
104
|
+
const objects = await new Parse.Query(types_1.Maintenance_Kanban_State)
|
|
105
|
+
.limit(1000000000)
|
|
106
|
+
.find({ useMasterKey: true });
|
|
107
|
+
const promises = objects.map((object) => {
|
|
108
|
+
object.save({ enabled: object.enabled === undefined ? true : object.enabled }, { useMasterKey: true });
|
|
109
|
+
});
|
|
110
|
+
await Promise.all(promises);
|
|
111
|
+
}
|