| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- import * as Yup from "yup";
- import { Request, Response } from "express";
- import AppError from "../errors/AppError";
- import TicketNote from "../models/TicketNote";
- import ListTicketNotesService from "../services/TicketNoteService/ListTicketNotesService";
- import CreateTicketNoteService from "../services/TicketNoteService/CreateTicketNoteService";
- import UpdateTicketNoteService from "../services/TicketNoteService/UpdateTicketNoteService";
- import ShowTicketNoteService from "../services/TicketNoteService/ShowTicketNoteService";
- import FindAllTicketNotesService from "../services/TicketNoteService/FindAllTicketNotesService";
- import DeleteTicketNoteService from "../services/TicketNoteService/DeleteTicketNoteService";
- import FindNotesByContactIdAndTicketId from "../services/TicketNoteService/FindNotesByContactIdAndTicketId";
- type IndexQuery = {
- searchParam: string;
- pageNumber: string;
- };
- type StoreTicketNoteData = {
- note: string;
- userId: number;
- contactId: number | 0;
- ticketId: number | 0;
- id?: number | string;
- };
- type UpdateTicketNoteData = {
- note: string;
- id?: number | string;
- userId?: number | 0;
- contactId?: number | 0;
- ticketId?: number | 0;
- };
- type QueryFilteredNotes = {
- contactId: number | string;
- ticketId: number | string;
- };
- export const index = async (req: Request, res: Response): Promise<Response> => {
- const { searchParam, pageNumber } = req.query as IndexQuery;
- const { ticketNotes, count, hasMore } = await ListTicketNotesService({
- searchParam,
- pageNumber
- });
- return res.json({ ticketNotes, count, hasMore });
- };
- export const list = async (req: Request, res: Response): Promise<Response> => {
- const ticketNotes: TicketNote[] = await FindAllTicketNotesService();
- return res.status(200).json(ticketNotes);
- };
- export const store = async (req: Request, res: Response): Promise<Response> => {
- const newTicketNote: StoreTicketNoteData = req.body;
- const { id: userId } = req.user;
- const schema = Yup.object().shape({
- note: Yup.string().required()
- });
- try {
- await schema.validate(newTicketNote);
- } catch (err) {
- throw new AppError(err.message);
- }
- const ticketNote = await CreateTicketNoteService({
- ...newTicketNote,
- userId
- });
- return res.status(200).json(ticketNote);
- };
- export const show = async (req: Request, res: Response): Promise<Response> => {
- const { id } = req.params;
- const ticketNote = await ShowTicketNoteService(id);
- return res.status(200).json(ticketNote);
- };
- export const update = async (
- req: Request,
- res: Response
- ): Promise<Response> => {
- const ticketNote: UpdateTicketNoteData = req.body;
- const schema = Yup.object().shape({
- note: Yup.string()
- });
- try {
- await schema.validate(ticketNote);
- } catch (err) {
- throw new AppError(err.message);
- }
- const recordUpdated = await UpdateTicketNoteService(ticketNote);
- return res.status(200).json(recordUpdated);
- };
- export const remove = async (
- req: Request,
- res: Response
- ): Promise<Response> => {
- const { id } = req.params;
- if (req.user.profile !== "admin") {
- throw new AppError("ERR_NO_PERMISSION", 403);
- }
- await DeleteTicketNoteService(id);
- return res.status(200).json({ message: "Observação removida" });
- };
- export const findFilteredList = async (
- req: Request,
- res: Response
- ): Promise<Response> => {
- try {
- const { contactId, ticketId } = req.query as QueryFilteredNotes;
- const notes: TicketNote[] = await FindNotesByContactIdAndTicketId({
- contactId,
- ticketId
- });
- return res.status(200).json(notes);
- } catch (e) {
- return res.status(500).json({ message: e });
- }
- };
|