diff --git a/backend/src/controllers/TicketController.ts b/backend/src/controllers/TicketController.ts index 8186fe0..dfaca0b 100644 --- a/backend/src/controllers/TicketController.ts +++ b/backend/src/controllers/TicketController.ts @@ -3,6 +3,7 @@ import GetDefaultWhatsapp from "../helpers/GetDefaultWhatsapp"; import Ticket from "../models/Ticket"; import CreateTicketService from "../services/TicketServices/CreateTicketService"; import ListTicketsService from "../services/TicketServices/ListTicketsService"; +import UpdateTicketService from "../services/TicketServices/UpdateTicketService"; // const Sequelize = require("sequelize"); // const { startOfDay, endOfDay, parseISO } = require("date-fns"); @@ -100,14 +101,11 @@ interface TicketData { } export const store = async (req: Request, res: Response): Promise => { - // const io = getIO(); - const { contactId, status }: TicketData = req.body; const ticket = await CreateTicketService({ contactId, status }); - // const serializaedTicket = { ...ticket.dataValues, contact: contact }; - + // const io = getIO(); // io.to("notification").emit("ticket", { // action: "create", // ticket: serializaedTicket @@ -116,33 +114,39 @@ export const store = async (req: Request, res: Response): Promise => { return res.status(200).json(ticket); }; -// export const update = (req: Request, res: Response): Promise => { -// const io = getIO(); -// const { ticketId } = req.params; +export const update = async ( + req: Request, + res: Response +): Promise => { + // const io = getIO(); + const { ticketId } = req.params; + const ticketData: TicketData = req.body; -// const ticket = await Ticket.findByPk(ticketId, { -// include: [ -// { -// model: Contact, -// as: "contact", -// attributes: ["name", "number", "profilePicUrl"] -// } -// ] -// }); + const ticket = await UpdateTicketService({ ticketData, ticketId }); -// if (!ticket) { -// return res.status(404).json({ error: "No ticket found with this ID" }); -// } + // const ticket = await Ticket.findByPk(ticketId, { + // include: [ + // { + // model: Contact, + // as: "contact", + // attributes: ["name", "number", "profilePicUrl"] + // } + // ] + // }); -// await ticket.update(req.body); + // if (!ticket) { + // return res.status(404).json({ error: "No ticket found with this ID" }); + // } -// io.to("notification").emit("ticket", { -// action: "updateStatus", -// ticket: ticket -// }); + // await ticket.update(req.body); -// return res.status(200).json(ticket); -// }; + // io.to("notification").emit("ticket", { + // action: "updateStatus", + // ticket: ticket + // }); + + return res.status(200).json(ticket); +}; // export const remove = (req: Request, res: Response): Promise => { // const io = getIO(); diff --git a/backend/src/routes/ticketRoutes.ts b/backend/src/routes/ticketRoutes.ts index 4cb6897..3a17fda 100644 --- a/backend/src/routes/ticketRoutes.ts +++ b/backend/src/routes/ticketRoutes.ts @@ -9,7 +9,7 @@ ticketRoutes.get("/tickets", isAuth, TicketController.index); ticketRoutes.post("/tickets", isAuth, TicketController.store); -// ticketRoutes.put("/tickets/:ticketId", isAuth, TicketController.update); +ticketRoutes.put("/tickets/:ticketId", isAuth, TicketController.update); // ticketRoutes.delete("/tickets/:ticketId", isAuth, TicketController.remove); diff --git a/backend/src/services/TicketServices/UpdateTicketService.ts b/backend/src/services/TicketServices/UpdateTicketService.ts new file mode 100644 index 0000000..342f0c5 --- /dev/null +++ b/backend/src/services/TicketServices/UpdateTicketService.ts @@ -0,0 +1,36 @@ +import AppError from "../../errors/AppError"; +import Ticket from "../../models/Ticket"; + +interface TicketData { + status?: string; + userId?: number; +} + +interface Request { + ticketData: TicketData; + ticketId: string; +} + +const UpdateTicketService = async ({ + ticketData, + ticketId +}: Request): Promise => { + const { status, userId } = ticketData; + + const ticket = await Ticket.findOne({ + where: { id: ticketId } + }); + + if (!ticket) { + throw new AppError("No ticket found with this ID.", 404); + } + + await ticket.update({ + status, + userId + }); + + return ticket; +}; + +export default UpdateTicketService;