@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
100 lines (99 loc) • 4.43 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.init = init;
const __1 = require("..");
const openservice_1 = require("../features/openservice");
const openinc_openservice_save_ticket_data_1 = require("../functions/openinc-openservice-save-ticket-data");
const catchError_1 = require("../helper/catchError");
const types_1 = require("../types");
const TRANSLATION_TITLE = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.SCHEDULEEXECUTION.TITLE;
const TRANSLATION_CONTENT = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.SCHEDULEEXECUTION.CONTENT;
async function init() {
(0, __1.beforeSaveHook)(types_1.Maintenance_Schedule_Execution, async (request) => {
const { object, original, user } = request;
await (0, __1.defaultHandler)(request);
await (0, __1.defaultAclHandler)(request);
});
(0, __1.afterSaveHook)(types_1.Maintenance_Schedule_Execution, async (request) => {
const { object, original, user } = request;
// save schedule message to source
addMachinelogMessage(object, user);
//If this is an update, do nothing
if (original !== undefined) {
return;
}
//If this is a new object, create all steps from the origin
const tenant = object.get("tenant")
? object.get("tenant")
: Parse.User.current()
? Parse.User.current().get("tenant")
: undefined;
if (object.origin === undefined || tenant === undefined) {
return;
}
const [fetchedOriginError, fetchedOrigin] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Schedule_Template)
.includeAll()
.get(object.origin.id, {
useMasterKey: true,
}));
if (fetchedOrigin === undefined) {
return;
}
const [stepserror, steps] = await (0, catchError_1.catchError)(fetchedOrigin
.get("steps")
.query()
.includeAll()
.find({ useMasterKey: true }));
if (stepserror) {
throw stepserror;
}
//For every step create a new step object and save as Maintenance_Schedule_Execution_Step
for await (const step of steps) {
const [roleserror, roles] = await (0, catchError_1.catchError)(step.relation("roles").query().find({ useMasterKey: true }));
const [mediaerror, media] = await (0, catchError_1.catchError)(step.relation("media").query().find({ useMasterKey: true }));
const executionstep = new types_1.Maintenance_Schedule_Execution_Step({
done: false,
comment: "",
scheduleexecution: object,
tenant: tenant,
description: step.get("description"),
title: step.get("title"),
fields: step.get("fields"),
});
const mediarelation = executionstep.relation("media");
if (media !== undefined) {
mediarelation.add(media);
}
const rolesrelation = executionstep.relation("roles");
if (roles !== undefined) {
rolesrelation.add(roles);
}
const [stepsaveerror, stepsaveobject] = await (0, catchError_1.catchError)(executionstep.save(null, { useMasterKey: true }));
}
});
}
async function addMachinelogMessage(object, user) {
const source = await object.get("source")?.fetch({ useMasterKey: true });
if (source)
new types_1.Maintenance_Message({
referencedObjectId: source.id,
classname: source.className,
title: TRANSLATION_TITLE,
content: TRANSLATION_CONTENT,
user: user,
tenant: user.get("tenant"),
displayAt: object.get("finishedAt") ?? object.get("createdAt"),
data: {
type: "system",
origin: {
id: object.id,
classname: object.className,
},
translation: {
title: object.get("title"),
description: object.get("description"),
username: (0, openinc_openservice_save_ticket_data_1.getUsername)(user),
},
},
}).save(null, { useMasterKey: true });
}