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

96 lines
3.4 KiB
TypeScript
Raw Normal View History

2024-12-23 14:00:50 +01:00
import { Request, Response } from "express";
2025-02-15 10:59:54 +01:00
import TemplateUsageService from "../../../service/configuration/templateUsageService";
import TemplateUsageFactory from "../../../factory/admin/configuration/templateUsage";
import { UpdateTemplateUsageCommand } from "../../../command/configuration/templateUsage/templateUsageCommand";
import TemplateUsageCommandHandler from "../../../command/configuration/templateUsage/templateUsageCommandHandler";
2025-01-05 14:14:00 +01:00
import PermissionHelper from "../../../helpers/permissionHelper";
import ForbiddenRequestException from "../../../exceptions/forbiddenRequestException";
import { PermissionModule } from "../../../type/permissionTypes";
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 (
2025-02-15 11:16:38 +01:00
PermissionHelper.can(req.permissions, "update", "configuration", tu.scope.split(".")[0] as PermissionModule) ||
2025-01-05 13:43:03 +01:00
PermissionHelper.can(req.permissions, "update", "club", tu.scope.split(".")[0] as PermissionModule)
2024-12-23 14:00:50 +01:00
);
});
}
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",
2025-02-15 11:16:38 +01:00
"configuration",
2024-12-23 14:00:50 +01:00
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;
2025-01-01 13:21:28 +01:00
const headerHeight = req.body.headerHeight ?? null;
const footerHeight = req.body.footerHeight ?? null;
2024-12-23 14:00:50 +01:00
let updateTemplateUsage: UpdateTemplateUsageCommand = {
scope: scope,
headerId: headerId,
bodyId: bodyId,
footerId: footerId,
2025-01-01 13:21:28 +01:00
headerHeight: headerHeight,
footerHeight: footerHeight,
2024-12-23 14:00:50 +01:00
};
await TemplateUsageCommandHandler.update(updateTemplateUsage);
res.sendStatus(204);
}