UNPKG

@openinc/parse-server-opendash

Version:
112 lines (111 loc) 5.11 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; //If this is an update, do nothing if (original !== undefined) { return; } // save schedule message to source addMachinelogMessage(object, user); //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 (tenant === undefined) return; const schedule = (await object.fetchWithInclude("schedule", { useMasterKey: true })).get("schedule"); if (schedule === undefined) { return; } let actualSteps = []; const [stepserror, steps] = await (0, catchError_1.catchError)(schedule.get("steps").query().includeAll().find({ useMasterKey: true })); if (stepserror) { throw stepserror; } if (!steps || steps.length === 0) { const scheduleWithTemplate = await schedule.fetchWithInclude("template", { useMasterKey: true, }); const template = scheduleWithTemplate.get("template"); if (!template) return; const [templateError, templateSteps] = await (0, catchError_1.catchError)(template.get("steps").query().includeAll().find({ useMasterKey: true })); if (templateError) throw templateError; actualSteps = templateSteps; } else { actualSteps = steps; } //For every step create a new step object and save as Maintenance_Schedule_Execution_Step for await (const step of actualSteps) { 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"), order: step.get("order"), }); 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 }); const scheduleSource = (await object .get("schedule") ?.fetchWithInclude("source", { useMasterKey: true }))?.get("source"); let actualSource = source || scheduleSource; if (actualSource) new types_1.Maintenance_Message({ referencedObjectId: actualSource.id, classname: actualSource.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 }); }