ff-admin-server/src/controller/admin/templateUsageController.ts

92 lines
3 KiB
TypeScript
Raw Normal View History

2024-12-23 14:00:50 +01:00
import { Request, Response } from "express";
import TemplateUsageService from "../../service/templateUsageService";
import TemplateUsageFactory from "../../factory/admin/templateUsage";
import { UpdateTemplateUsageCommand } from "../../command/templateUsageCommand";
import TemplateUsageCommandHandler from "../../command/templateUsageCommandHandler";
import PermissionHelper from "../../helpers/permissionHelper";
import ForbiddenRequestException from "../../exceptions/forbiddenRequestException";
import { PermissionModule } from "../../type/permissionTypes";
2024-12-24 13:52:56 +01:00
import { PdfExport } from "../../helpers/pdfExport";
import { DemoDataHelper } from "../../helpers/demoDataHelper";
2024-12-23 14:00:50 +01:00
/**
* @description get all templateUsages
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function getAllTemplateUsages(req: Request, res: Response): Promise<any> {
let templateUsages = await TemplateUsageService.getAll();
if (!req.isOwner) {
templateUsages = templateUsages.filter((tu) => {
return (
PermissionHelper.can(req.permissions, "update", "settings", tu.scope) ||
PermissionHelper.can(req.permissions, "update", "club", tu.scope)
);
});
}
res.json(TemplateUsageFactory.mapToBase(templateUsages));
}
2024-12-24 13:52:56 +01:00
/**
* @description print demo of templateUsage
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function printTemplateUsageDemo(req: Request, res: Response): Promise<any> {
const scope = req.params.scope as PermissionModule;
let demoData = DemoDataHelper.getData(scope);
2024-12-28 18:03:33 +01:00
let pdf = await PdfExport.renderFile({
template: scope,
saveToDisk: false,
data: demoData,
});
2024-12-24 13:52:56 +01:00
let pdfbuffer = Buffer.from(pdf);
res.setHeader("Content-Type", "application/pdf");
res.setHeader("Content-Length", pdfbuffer.byteLength);
res.setHeader("Content-Disposition", "inline; filename=preview.pdf");
res.send(pdfbuffer);
}
2024-12-23 14:00:50 +01:00
/**
* @description update templateUsage
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function updateTemplateUsage(req: Request, res: Response): Promise<any> {
const scope = req.params.scope;
let allowedSettings = PermissionHelper.can(
req.permissions,
"update",
"settings",
req.params.scope as PermissionModule
);
let allowedClub = PermissionHelper.can(req.permissions, "update", "club", req.params.scope as PermissionModule);
if (!(req.isOwner || allowedSettings || allowedClub)) {
throw new ForbiddenRequestException(`missing permission for editing scope ${req.params.scope}`);
}
const headerId = req.body.headerId ?? null;
const bodyId = req.body.bodyId ?? null;
const footerId = req.body.footerId ?? null;
let updateTemplateUsage: UpdateTemplateUsageCommand = {
scope: scope,
headerId: headerId,
bodyId: bodyId,
footerId: footerId,
};
await TemplateUsageCommandHandler.update(updateTemplateUsage);
res.sendStatus(204);
}