import { Request, Response } from "express"; import CalendarService from "../../service/calendarService"; import CalendarFactory from "../../factory/admin/calendar"; import CalendarTypeService from "../../service/calendarTypeService"; import CalendarTypeFactory from "../../factory/admin/calendarType"; import { CreateCalendarCommand, DeleteCalendarCommand, UpdateCalendarCommand } from "../../command/calendarCommand"; import CalendarCommandHandler from "../../command/calendarCommandHandler"; import { CreateCalendarTypeCommand, DeleteCalendarTypeCommand, UpdateCalendarTypeCommand, } from "../../command/calendarTypeCommand"; import CalendarTypeCommandHandler from "../../command/calendarTypeCommandHandler"; /** * @description get all calendar items * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getAllCalendarItems(req: Request, res: Response): Promise { let items = await CalendarService.getAll(); res.json(CalendarFactory.mapToBase(items)); } /** * @description get calendar item by id * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getCalendarItemById(req: Request, res: Response): Promise { const id = req.params.id; let item = await CalendarService.getById(id); res.json(CalendarFactory.mapToSingle(item)); } /** * @description get all calendar types * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getAllCalendarTypes(req: Request, res: Response): Promise { let types = await CalendarTypeService.getAll(); res.json(CalendarTypeFactory.mapToBase(types)); } /** * @description get calendar type by id * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getCalendarTypeById(req: Request, res: Response): Promise { const id = parseInt(req.params.id); let type = await CalendarTypeService.getById(id); res.json(CalendarTypeFactory.mapToSingle(type)); } /** * @description create calendar item * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function createCalendarItem(req: Request, res: Response): Promise { const starttime = req.body.starttime; const endtime = req.body.endtime; const title = req.body.title; const content = req.body.content; const location = req.body.location; const allDay = req.body.allDay; const typeId = req.body.typeId; let createItem: CreateCalendarCommand = { starttime, endtime, title, content, location, allDay, typeId, }; let id = await CalendarCommandHandler.create(createItem); res.send(id); } /** * @description create calendar type * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function createCalendarType(req: Request, res: Response): Promise { const type = req.body.type; const nscdr = req.body.nscdr; const color = req.body.color; const passphrase = req.body.passphrase; let createType: CreateCalendarTypeCommand = { type, nscdr, color, passphrase, }; let id = await CalendarTypeCommandHandler.create(createType); res.send(id); } /** * @description update calendar item * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function updateCalendarItem(req: Request, res: Response): Promise { const id = req.params.id; const starttime = req.body.starttime; const endtime = req.body.endtime; const title = req.body.title; const content = req.body.content; const location = req.body.location; const allDay = req.body.allDay; const typeId = req.body.typeId; let updateItem: UpdateCalendarCommand = { id, starttime, endtime, title, content, location, allDay, typeId, }; await CalendarCommandHandler.update(updateItem); res.sendStatus(204); } /** * @description update calendar type * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function updateCalendarType(req: Request, res: Response): Promise { const id = parseInt(req.params.id); const type = req.body.type; const nscdr = req.body.nscdr; const color = req.body.color; const passphrase = req.body.passphrase; let updateType: UpdateCalendarTypeCommand = { id, type, nscdr, color, passphrase, }; await CalendarTypeCommandHandler.update(updateType); res.sendStatus(204); } /** * @description delete calendar item * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function deleteCalendarItem(req: Request, res: Response): Promise { const id = req.params.id; let deleteItem: DeleteCalendarCommand = { id, }; await CalendarCommandHandler.delete(deleteItem); res.sendStatus(204); } /** * @description delete calendar type * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function deleteCalendarType(req: Request, res: Response): Promise { const id = parseInt(req.params.id); let deleteType: DeleteCalendarTypeCommand = { id, }; await CalendarTypeCommandHandler.delete(deleteType); res.sendStatus(204); }