| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- import { Request, Response } from "express";
- import { getIO } from "../libs/socket";
- import AppError from "../errors/AppError";
- import CreateService from "../services/TagServices/CreateService";
- import ListService from "../services/TagServices/ListService";
- import UpdateService from "../services/TagServices/UpdateService";
- import ShowService from "../services/TagServices/ShowService";
- import DeleteService from "../services/TagServices/DeleteService";
- import SimpleListService from "../services/TagServices/SimpleListService";
- import SyncTagService from "../services/TagServices/SyncTagsService";
- import KanbanListService from "../services/TagServices/KanbanListService";
- type IndexQuery = {
- searchParam?: string;
- pageNumber?: string | number;
- kanban?: number;
- };
- export const index = async (req: Request, res: Response): Promise<Response> => {
- const { pageNumber, searchParam } = req.query as IndexQuery;
- const { companyId } = req.user;
- const { tags, count, hasMore } = await ListService({
- searchParam,
- pageNumber,
- companyId
- });
- return res.json({ tags, count, hasMore });
- };
- export const store = async (req: Request, res: Response): Promise<Response> => {
- const { name, color, kanban } = req.body;
- const { companyId } = req.user;
- const tag = await CreateService({
- name,
- color,
- companyId,
- kanban
- });
- const io = getIO();
- io.to(`company-${companyId}-mainchannel`).emit("tag", {
- action: "create",
- tag
- });
- return res.status(200).json(tag);
- };
- export const kanban = async (req: Request, res: Response): Promise<Response> => {
- const { companyId } = req.user;
- const tags = await KanbanListService({ companyId });
- return res.json({lista:tags});
- };
- export const show = async (req: Request, res: Response): Promise<Response> => {
- const { tagId } = req.params;
- const tag = await ShowService(tagId);
- return res.status(200).json(tag);
- };
- export const update = async (
- req: Request,
- res: Response
- ): Promise<Response> => {
- if (req.user.profile !== "admin") {
- throw new AppError("ERR_NO_PERMISSION", 403);
- }
- const { tagId } = req.params;
- const tagData = req.body;
- const tag = await UpdateService({ tagData, id: tagId });
- const io = getIO();
- io.to(`company-${req.user.companyId}-mainchannel`).emit("tag", {
- action: "update",
- tag
- });
- return res.status(200).json(tag);
- };
- export const remove = async (
- req: Request,
- res: Response
- ): Promise<Response> => {
- const { tagId } = req.params;
- await DeleteService(tagId);
- const io = getIO();
- io.to(`company-${req.user.companyId}-mainchannel`).emit("tag", {
- action: "delete",
- tagId
- });
- return res.status(200).json({ message: "Tag deleted" });
- };
- export const list = async (req: Request, res: Response): Promise<Response> => {
- const { searchParam } = req.query as IndexQuery;
- const { companyId } = req.user;
- const tags = await SimpleListService({ searchParam, companyId });
- return res.json(tags);
- };
- export const syncTags = async (
- req: Request,
- res: Response
- ): Promise<Response> => {
- const data = req.body;
- const { companyId } = req.user;
- const tags = await SyncTagService({ ...data, companyId });
- return res.json(tags);
- };
|