projeto-hit/backend/src/services/MessageServices/CreateMessageService.ts

64 lines
1.2 KiB
TypeScript

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<Message> => {
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;