import { getIO } from "../../libs/socket"; import Message from "../../models/Message"; import Ticket from "../../models/Ticket"; interface MessageData { id: string; ticketId: number; body: string; contactId?: number; fromMe?: boolean; read?: boolean; mediaType?: string; mediaUrl?: string; } interface Request { messageData: MessageData; } const CreateMessageService = async ({messageData}: Request): Promise => { await Message.upsert(messageData); const message = await Message.findByPk(messageData.id, { include: [ "contact", { model: Ticket, as: "ticket", include: ["contact", "queue"] }, { model: Message, as: "quotedMsg", include: ["contact"] } ] }); if (!message) { throw new Error("ERR_CREATING_MESSAGE"); } if(message.ticket.status!='queueChoice'){ const io = getIO(); io.to(message.ticketId.toString()) .to(message.ticket.status) .to("notification") .emit("appMessage", { action: "create", message, ticket: message.ticket, contact: message.ticket.contact }); } return message; }; export default CreateMessageService;