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"; /** * @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 { 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)); } /** * @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 { 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); }