@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
121 lines (120 loc) • 6.15 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.DUEDATE.TITLE;
const TRANSLATION_CONTENT = openservice_1.OpenserviceMessageTranslationKeys.TICKETLOG.DUEDATE.CONTENT;
const TRANSLATION_TITLE_MACHINELOG = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.DUEDATE.TITLE;
const TRANSLATION_CONTENT_MACHINELOG = openservice_1.OpenserviceMessageTranslationKeys.MACHINELOG.DUEDATE.CONTENT;
async function init() {
(0, __1.beforeSaveHook)(types_1.Maintenance_Duedate, 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_Duedate, 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("end")?.getTime() === second.get("end")?.getTime();
});
// fetch necessary data
await savedObject.fetchWithInclude(["ticket"], {
useMasterKey: true,
});
const previous = await new Parse.Query(types_1.Maintenance_Duedate)
.includeAll()
.equalTo("ticket", savedObject.get("ticket"))
.notEqualTo("objectId", savedObject.id)
.descending("createdAt")
.first({ useMasterKey: true });
const dateFormat = {
year: "numeric",
month: "2-digit",
day: "2-digit",
hour: "2-digit",
minute: "2-digit",
};
// 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),
oldstart: previous?.get("start")?.toLocaleDateString("de-DE", dateFormat) ??
"Nicht vorhanden",
oldend: previous?.get("end")?.toLocaleDateString("de-DE", dateFormat) ??
"Nicht vorhanden",
newstart: savedObject
?.get("start")
?.toLocaleDateString("de-DE", dateFormat) ?? "Nicht vorhanden",
newend: savedObject?.get("end")?.toLocaleDateString("de-DE", dateFormat) ??
"Nicht vorhanden",
},
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),
oldstart: previous?.get("start")?.toLocaleDateString("de-DE", dateFormat) ??
"Nicht vorhanden",
oldend: previous?.get("end")?.toLocaleDateString("de-DE", dateFormat) ??
"Nicht vorhanden",
newstart: savedObject
?.get("start")
?.toLocaleDateString("de-DE", dateFormat) ?? "Nicht vorhanden",
newend: savedObject
?.get("end")
?.toLocaleDateString("de-DE", dateFormat) ?? "Nicht vorhanden",
ticketName: savedObject.get("ticket")?.get("title"),
},
origin: {
id: savedObject.get("ticket")?.id,
classname: savedObject.get("ticket")?.className,
},
},
}).save(null, { useMasterKey: true });
}
});
}