UNPKG

@openinc/parse-server-opendash

Version:
124 lines (123 loc) 6.39 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 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.KANBANSTATE.TITLE; const TRANSLATION_CONTENT = openservice_1.OpenserviceMessageTranslationKeys.TICKETLOG.KANBANSTATE.CONTENT; const TRANSLATION_TITLE_MACHINELOG = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.KANBANSTATE.TITLE; const TRANSLATION_CONTENT_MACHINELOG = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.KANBANSTATE.CONTENT; async function init() { (0, __1.beforeSaveHook)(types_1.Maintenance_Ticket_Kanban_State, async (request) => { const { object, original, user } = request; await (0, __1.defaultHandler)(request); await (0, __1.defaultAclHandler)(request, { allowTenantUserWrite: true, }); if (original) { await (0, __1.requirePermission)(request, "maintenance:can-update-kanbanstate", "Permission denied."); } // 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.notEqualTo("objectId", object.id); 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_Kanban_State, 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.equalTo("ticket", object.get("ticket")); query.notEqualTo("objectId", object.id); }, (first, second) => { return first.get("state")?.id === second.get("state")?.id; }); // fetch necessary data await savedObject.fetchWithInclude(["ticket", "state"], { useMasterKey: true, }); const previousState = await new Parse.Query(types_1.Maintenance_Ticket_Kanban_State) .includeAll() .descending("createdAt") .equalTo("ticket", savedObject.get("ticket")) .notEqualTo("objectId", savedObject.id) .first({ useMasterKey: true }); const state = await savedObject.get("state")?.fetch({ 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: previousState?.get("state").get("label") ?? "Nicht vorhanden", new: state.get("label"), }, origin: { id: savedObject.id, classname: savedObject.className, }, }, }).save(null, { useMasterKey: true }); // Update the current state of the ticket const currentTicketState = await new Parse.Query(types_1.Maintenance_Ticket_Kanban_State_Current) .equalTo("ticket", savedObject.get("ticket")) .first({ useMasterKey: true }); // if the ticket is already in the current state table, update it if (currentTicketState) { currentTicketState.set("ticketState", savedObject); currentTicketState.set("state", savedObject.get("state")); await currentTicketState.save(null, { useMasterKey: true }); } // if the ticket is not in the current state table, create a new entry else { const newTicketState = new types_1.Maintenance_Ticket_Kanban_State_Current({ ticket: savedObject.get("ticket"), ticketState: savedObject, state: savedObject.get("state"), tenant: savedObject.get("tenant"), }); await newTicketState.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: previousState?.get("state").get("label") ?? "Nicht vorhanden", new: state.get("label"), ticketName: savedObject.get("ticket")?.get("title"), }, origin: { id: savedObject.get("ticket")?.id, classname: savedObject.get("ticket")?.className, }, }, }).save(null, { useMasterKey: true }); } }); }