diff --git a/backend/src/services/wbotMessageListener.js b/backend/src/services/wbotMessageListener.js index 8e24ee9..a0b5a1b 100644 --- a/backend/src/services/wbotMessageListener.js +++ b/backend/src/services/wbotMessageListener.js @@ -1,6 +1,7 @@ const path = require("path"); const fs = require("fs"); const { Op } = require("sequelize"); +const { parseISO, subHours } = require("date-fns"); const Contact = require("../models/Contact"); const Ticket = require("../models/Ticket"); @@ -28,16 +29,36 @@ const verifyContact = async (msgContact, profilePicUrl) => { }; const verifyTicket = async contact => { - const [ticket] = await Ticket.findOrCreate({ + let ticket = await Ticket.findOne({ where: { status: { [Op.or]: ["open", "pending"], }, contactId: contact.id, }, - defaults: { contactId: contact.id, status: "pending" }, }); + if (!ticket) { + ticket = await Ticket.findOne({ + where: { + createdAt: { [Op.between]: [subHours(new Date(), 2), new Date()] }, + contactId: contact.id, + }, + order: [["createdAt", "DESC"]], + }); + + if (ticket) { + await ticket.update({ status: "open" }); + } + } + + if (!ticket) { + ticket = await Ticket.create({ + contactId: contact.id, + status: "pending", + }); + } + return ticket; }; diff --git a/frontend/src/components/MessagesList/index.js b/frontend/src/components/MessagesList/index.js index 3e2a497..761ee58 100644 --- a/frontend/src/components/MessagesList/index.js +++ b/frontend/src/components/MessagesList/index.js @@ -221,7 +221,7 @@ const MessagesList = () => { const classes = useStyles(); const token = localStorage.getItem("token"); - const userId = localStorage.getItem("userId"); + const userId = +localStorage.getItem("userId"); const [loading, setLoading] = useState(true); const [contact, setContact] = useState({}); diff --git a/frontend/src/components/TicketsList/index.js b/frontend/src/components/TicketsList/index.js index eddd6ec..d9660bf 100644 --- a/frontend/src/components/TicketsList/index.js +++ b/frontend/src/components/TicketsList/index.js @@ -288,6 +288,7 @@ const TicketsList = () => { let aux = [...prevState]; aux[ticketIndex].unreadMessages++; aux[ticketIndex].lastMessage = data.message.body; + aux[ticketIndex].status = data.ticket.status; aux.unshift(aux.splice(ticketIndex, 1)[0]); return aux; } else { @@ -488,6 +489,8 @@ const TicketsList = () => { } }; + console.log(tickets); + return (