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

82 lines
1.7 KiB
TypeScript
Raw Normal View History

import { updateTicketCacheByTicketId } from "../../helpers/TicketCache";
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> => {
2023-01-20 19:38:24 +00:00
console.log('UPSERT MESSAGE messageData: ', messageData)
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') {
// TEST DEL
await updateTicketCacheByTicketId(message.ticket.id,
{
lastMessage: message.body,
updatedAt: new Date(message.ticket.updatedAt).toISOString(),
'contact.profilePicUrl': message.ticket.contact.profilePicUrl,
unreadMessages: message.ticket.unreadMessages
})
//
2023-01-20 19:38:24 +00:00
console.log('Entrou no create message')
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;