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;
|
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);
|
|
|
|
}
|