import { Request, Response } from "express"; import RoleService from "../../../service/user/roleService"; import RoleFactory from "../../../factory/admin/user/role"; import RolePermissionService from "../../../service/user/rolePermissionService"; import PermissionHelper from "../../../helpers/permissionHelper"; import { CreateRoleCommand, DeleteRoleCommand, UpdateRoleCommand } from "../../../command/user/role/roleCommand"; import RoleCommandHandler from "../../../command/user/role/roleCommandHandler"; import { UpdateRolePermissionsCommand } from "../../../command/user/role/rolePermissionCommand"; import RolePermissionCommandHandler from "../../../command/user/role/rolePermissionCommandHandler"; /** * @description get All roles * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getAllRoles(req: Request, res: Response): Promise { let roles = await RoleService.getAll(); res.json(RoleFactory.mapToBase(roles)); } /** * @description get role by id * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getRoleById(req: Request, res: Response): Promise { const id = parseInt(req.params.id); let role = await RoleService.getById(id); res.json(RoleFactory.mapToSingle(role)); } /** * @description get permissions by role * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getRolePermissions(req: Request, res: Response): Promise { const id = parseInt(req.params.id); let permissions = await RolePermissionService.getByRole(id); res.json(PermissionHelper.convertToObject(permissions.map((p) => p.permission))); } /** * @description create new role * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function createRole(req: Request, res: Response): Promise { let role = req.body.role; let createRole: CreateRoleCommand = { role: role, }; await RoleCommandHandler.create(createRole); res.sendStatus(204); } /** * @description update role data * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function updateRole(req: Request, res: Response): Promise { const id = parseInt(req.params.id); let role = req.body.role; let updateRole: UpdateRoleCommand = { id: id, role: role, }; await RoleCommandHandler.update(updateRole); res.sendStatus(204); } /** * @description update role assigned permission strings * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function updateRolePermissions(req: Request, res: Response): Promise { const id = parseInt(req.params.id); let permissions = req.body.permissions; let permissionStrings = PermissionHelper.convertToStringArray(permissions); let updateRolePermissions: UpdateRolePermissionsCommand = { roleId: id, permissions: permissionStrings, }; await RolePermissionCommandHandler.updatePermissions(updateRolePermissions); res.sendStatus(204); } /** * @description delete role by id * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function deleteRole(req: Request, res: Response): Promise { const id = parseInt(req.params.id); let deleteRole: DeleteRoleCommand = { id: id, }; await RoleCommandHandler.delete(deleteRole); res.sendStatus(204); }