UNPKG

@openinc/parse-server-opendash

Version:
99 lines (98 loc) 4.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.init = init; exports.ticketMaterialToString = ticketMaterialToString; exports.ticketMaterialItemListToString = ticketMaterialItemListToString; const __1 = require(".."); const openservice_1 = require("../features/openservice"); 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 removeLatestMessage_1 = require("../features/openservice/messages/removeLatestMessage"); const TRANSLATION_TITLE = openservice_1.OpenserviceMessageTranslationKeys.TICKETLOG.MATERIAL.TITLE; const TRANSLATION_CONTENT = openservice_1.OpenserviceMessageTranslationKeys.TICKETLOG.MATERIAL.CONTENT; const TRANSLATION_TITLE_MACHINELOG = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.MATERIAL.TITLE; const TRANSLATION_CONTENT_MACHINELOG = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.MATERIAL.CONTENT; async function init() { (0, __1.beforeSaveHook)(types_1.Maintenance_Ticket_Material, 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_Ticket_Material, async (request) => { const { object, original, user } = request; const previous = await new Parse.Query(types_1.Maintenance_Ticket_Material) .includeAll() .equalTo("ticket", object.get("ticket")) .notEqualTo("objectId", object.id) .descending("createdAt") .first({ useMasterKey: true }); await object.fetchWithInclude("ticket", { useMasterKey: true }); // create new message log await new types_1.Maintenance_Message({ referencedObjectId: object.get("ticket")?.id, classname: object.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: ticketMaterialItemListToString(previous?.get("itemList")) ?? "Nicht vorhanden", new: ticketMaterialItemListToString(object?.get("itemList")) ?? "Nicht vorhanden", }, origin: { id: object.id, classname: object.className, }, }, }).save(null, { useMasterKey: true }); // to machinelog const source = (await (0, openinc_openservice_ticket_data_1.getTicketSource)(object.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: ticketMaterialItemListToString(previous?.get("itemList")) ?? "Nicht vorhanden", new: ticketMaterialItemListToString(object?.get("itemList")) ?? "Nicht vorhanden", ticketName: object.get("ticket")?.get("title"), }, origin: { id: object.get("ticket")?.id, classname: object.get("ticket")?.className, }, }, }).save(null, { useMasterKey: true }); } }); } function ticketMaterialToString(material) { if (!material) return ""; return `${material.name} (${material.quantity}${material.unit})`; } function ticketMaterialItemListToString(materials) { if (!materials) return undefined; return materials.map(ticketMaterialToString).join(", "); }