UNPKG

@openinc/parse-server-opendash

Version:
103 lines (102 loc) 5.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.init = init; const __1 = require(".."); const openservice_1 = require("../features/openservice"); const removeLatestMessage_1 = require("../features/openservice/messages/removeLatestMessage"); const openinc_openservice_save_ticket_data_1 = require("../functions/openinc-openservice-save-ticket-data"); const openinc_openservice_ticket_data_1 = require("../functions/openinc-openservice-ticket-data"); const removeShorltyPreviousEntry_1 = require("../helper/removeShorltyPreviousEntry"); const types_1 = require("../types"); const TRANSLATION_TITLE = openservice_1.OpenserviceMessageTranslationKeys.TICKETLOG.PRIORITY.TITLE; const TRANSLATION_CONTENT = openservice_1.OpenserviceMessageTranslationKeys.TICKETLOG.PRIORITY.CONTENT; const TRANSLATION_TITLE_MACHINELOG = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.PRIORITY.TITLE; const TRANSLATION_CONTENT_MACHINELOG = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.PRIORITY.CONTENT; async function init() { (0, __1.beforeSaveHook)(types_1.Maintenance_Priority, async (request) => { const { object, original, user } = request; await (0, __1.defaultHandler)(request); await (0, __1.defaultAclHandler)(request); // Remove previous entry if it was created within 5 minutes const removedEntry = await (0, removeShorltyPreviousEntry_1.removeShortlyPreviousEntry)(object, (query) => { query.equalTo("ticket", object.get("ticket")); query.descending("createdAt"); return query; }); // if an entry was removed, remove the message as well if (removedEntry) (0, removeLatestMessage_1.removeLatestMessage)(removedEntry, TRANSLATION_TITLE, TRANSLATION_CONTENT); }); (0, __1.afterSaveHook)(types_1.Maintenance_Priority, async (request) => { const { object, original, user } = request; // Remove entry if it has the same values as the previous entry so its simply reverted to the already existing entry const savedObject = await (0, removeShorltyPreviousEntry_1.removeEqualSaved)(object, (query) => { query.includeAll(); query.equalTo("ticket", object.get("ticket")); query.notEqualTo("objectId", object.id); return query; }, (first, second) => { return first.get("value") === second.get("value"); }); // fetch necessary data await savedObject.fetchWithInclude(["ticket"], { useMasterKey: true, }); const previousPrio = await new Parse.Query(types_1.Maintenance_Priority) .includeAll() .equalTo("ticket", savedObject.get("ticket")) .notEqualTo("objectId", savedObject.id) .descending("createdAt") .first({ useMasterKey: true }); // create new message log await new types_1.Maintenance_Message({ referencedObjectId: savedObject.get("ticket")?.id, classname: savedObject.get("ticket")?.className, title: TRANSLATION_TITLE, content: TRANSLATION_CONTENT, user: user, tenant: user?.get("tenant"), data: { type: "system", translation: { username: (0, openinc_openservice_save_ticket_data_1.getUsername)(user), old: previousPrio?.get("value") ?? "Nicht vorhanden", new: savedObject?.get("value"), }, origin: { id: savedObject.id, classname: savedObject.className, }, }, }).save(null, { useMasterKey: true }); // to machinelog const source = (await (0, openinc_openservice_ticket_data_1.getTicketSource)(savedObject.get("ticket")))?.get("source"); if (source) { await new types_1.Maintenance_Message({ referencedObjectId: source?.id, classname: source?.className, title: TRANSLATION_TITLE_MACHINELOG, content: TRANSLATION_CONTENT_MACHINELOG, user: user, tenant: user?.get("tenant"), data: { type: "system", translation: { username: (0, openinc_openservice_save_ticket_data_1.getUsername)(user), old: previousPrio?.get("value") ?? "Nicht vorhanden", new: savedObject?.get("value"), ticketName: savedObject.get("ticket")?.get("title"), }, origin: { id: savedObject.get("ticket")?.id, classname: savedObject.get("ticket")?.className, }, }, }).save(null, { useMasterKey: true }); } //Save object.id in object.ticket.latestPriority const ticket = savedObject.get("ticket"); ticket.set("latestPriorityValue", savedObject.get("value")); await ticket.save(null, { useMasterKey: true }); }); }