@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
99 lines (98 loc) • 4.97 kB
JavaScript
"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.DOWNTIME.TITLE;
const TRANSLATION_CONTENT = openservice_1.OpenserviceMessageTranslationKeys.TICKETLOG.DOWNTIME.CONTENT;
const TRANSLATION_TITLE_MACHINELOG = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.DOWNTIME.TITLE;
const TRANSLATION_CONTENT_MACHINELOG = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.DOWNTIME.CONTENT;
async function init() {
(0, __1.beforeSaveHook)(types_1.Maintenance_Downtime, 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_Downtime, 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 previous = await new Parse.Query(types_1.Maintenance_Downtime)
.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: previous?.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: previous?.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 });
}
});
}