import { Request, Response } from "express"; import TemplateService from "../../service/templateService"; import TemplateFactory from "../../factory/admin/template"; import { CreateTemplateCommand, DeleteTemplateCommand, UpdateTemplateCommand } from "../../command/templateCommand"; import TemplateCommandHandler from "../../command/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 { 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 { 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 { 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 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 { const id = parseInt(req.params.id); const template = req.body.template; const description = req.body.description; const design = req.body.design; const headerHTML = req.body.headerHTML; const bodyHTML = req.body.bodyHTML; const footerHTML = req.body.footerHTML; let updateTemplate: UpdateTemplateCommand = { id: id, template: template, description: description, design: design, headerHTML: headerHTML, bodyHTML: bodyHTML, footerHTML: footerHTML, }; 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 { const id = parseInt(req.params.id); let deleteTemplate: DeleteTemplateCommand = { id: id, }; await TemplateCommandHandler.delete(deleteTemplate); res.sendStatus(204); }