UNPKG

@openinc/parse-server-opendash

Version:
100 lines (99 loc) 4.43 kB
"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 }); }