ff-admin-server/src/controller/admin/settings/templateController.ts
2025-01-05 14:14:00 +01:00

120 lines
3.4 KiB
TypeScript

import { Request, Response } from "express";
import TemplateService from "../../../service/settings/templateService";
import TemplateFactory from "../../../factory/admin/settings/template";
import { CreateTemplateCommand, DeleteTemplateCommand, UpdateTemplateCommand } from "../../../command/settings/template/templateCommand";
import TemplateCommandHandler from "../../../command/settings/template/templateCommandHandler";
/**
* @description get all templates
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function getAllTemplates(req: Request, res: Response): Promise<any> {
let templates = await TemplateService.getAll();
res.json(TemplateFactory.mapToBase(templates));
}
/**
* @description get template by id
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function getTemplateById(req: Request, res: Response): Promise<any> {
const id = parseInt(req.params.id);
let template = await TemplateService.getById(id);
res.json(TemplateFactory.mapToSingle(template));
}
/**
* @description create new template
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function createTemplate(req: Request, res: Response): Promise<any> {
const template = req.body.template;
const description = req.body.description;
let createTemplate: CreateTemplateCommand = {
template: template,
description: description,
};
let id = await TemplateCommandHandler.create(createTemplate);
res.status(200).send(id);
}
/**
* @description clone template
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function cloneTemplate(req: Request, res: Response): Promise<any> {
const cloneId = req.body.cloneId;
const { template, description, design, html } = await TemplateService.getById(cloneId);
let createTemplate: CreateTemplateCommand = {
template: "",
description: "",
};
let id = await TemplateCommandHandler.create(createTemplate);
let updateTemplate: UpdateTemplateCommand = {
id: id,
template: template + " - Kopie",
description: description,
design: design,
html: html,
};
await TemplateCommandHandler.update(updateTemplate);
res.status(200).send(id);
}
/**
* @description update template
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function updateTemplate(req: Request, res: Response): Promise<any> {
const id = parseInt(req.params.id);
const template = req.body.template;
const description = req.body.description;
const design = req.body.design;
const html = req.body.html;
let updateTemplate: UpdateTemplateCommand = {
id: id,
template: template,
description: description,
design: design,
html: html,
};
await TemplateCommandHandler.update(updateTemplate);
res.sendStatus(204);
}
/**
* @description delete template
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function deleteTemplate(req: Request, res: Response): Promise<any> {
const id = parseInt(req.params.id);
let deleteTemplate: DeleteTemplateCommand = {
id: id,
};
await TemplateCommandHandler.delete(deleteTemplate);
res.sendStatus(204);
}