@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
40 lines (39 loc) • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.saveProject = saveProject;
const types_1 = require("../../../types");
async function saveProject(ticket, project, fetchOptions) {
const current = await getCurrent(ticket);
const changed = current?.get("project")?.id !== project;
if (!changed)
return current;
// check if ticket already has a project assigned
// if so, remove the ticket from the old project
const prevProject = await ticket.get("project")?.fetch(fetchOptions);
if (prevProject && prevProject.id !== project) {
prevProject.relation("tickets").remove(ticket);
prevProject.save(null, fetchOptions);
}
const projectObj = await new Parse.Query(types_1.Maintenance_Project)
.equalTo("objectId", project)
.first(fetchOptions);
const ticketProjectObject = new types_1.Maintenance_Ticket_Project({
ticket,
project: projectObj,
tenant: ticket.get("tenant"),
user: ticket.get("user"),
});
await ticketProjectObject.save(null, fetchOptions);
ticket.set("project", projectObj);
await ticket.save(null, fetchOptions);
if (projectObj) {
projectObj.relation("tickets").add(ticket);
await projectObj.save(null, fetchOptions);
}
}
async function getCurrent(ticket) {
return await new Parse.Query(types_1.Maintenance_Ticket_Project)
.descending("createdAt")
.equalTo("ticket", ticket)
.first({ useMasterKey: true });
}