@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
99 lines (98 loc) • 4.99 kB
JavaScript
"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(", ");
}