diff --git a/.gitignore b/.gitignore index 4dd37d9..19b5ead 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,8 @@ WWebJS .env.development.local .env.test.local .env.production.local +.env.save +nano.save npm-debug.log* yarn-debug.log* diff --git a/backend/src/errors/AppError.ts b/backend/src/errors/AppError.ts index a8b1209..eed88bd 100644 --- a/backend/src/errors/AppError.ts +++ b/backend/src/errors/AppError.ts @@ -1,5 +1,5 @@ class AppError { - public readonly message: string; + public message: string; public readonly statusCode: number; diff --git a/backend/src/helpers/CheckContactOpenTickets.ts b/backend/src/helpers/CheckContactOpenTickets.ts index 303f4a7..0b4a52e 100644 --- a/backend/src/helpers/CheckContactOpenTickets.ts +++ b/backend/src/helpers/CheckContactOpenTickets.ts @@ -1,6 +1,7 @@ import { Op } from "sequelize"; import AppError from "../errors/AppError"; import Ticket from "../models/Ticket"; +import User from "../models/User"; import ListWhatsAppsNumber from "../services/WhatsappService/ListWhatsAppsNumber"; import { getSettingValue } from "./WhaticketSettings"; import ListWhatsAppsForQueueService from "../services/WhatsappService/ListWhatsAppsForQueueService"; @@ -38,8 +39,13 @@ const CheckContactOpenTickets = async ( if (ticket) { if (handle) return true; - - throw new AppError("ERR_OTHER_OPEN_TICKET"); + const userName = await User.findOne({ + where:{ id: ticket.userId } + }); + const error = new AppError("ERR_OTHER_OPEN_TICKET"); + error.message = `Erro: já existe um ticket criado com esse contato. Responsável: ${userName? userName.name.toUpperCase() : 'Aguardando'}`; + + throw error; } diff --git a/backend/src/services/WbotServices/wbotMessageListener.ts b/backend/src/services/WbotServices/wbotMessageListener.ts index d5da2bf..f2b24e0 100644 --- a/backend/src/services/WbotServices/wbotMessageListener.ts +++ b/backend/src/services/WbotServices/wbotMessageListener.ts @@ -409,7 +409,7 @@ const verifyQueue = async ( //test del transfere o atendimento se entrar na ura infinita const repet: any = await mostRepeatedPhrase(ticket.id); - if (repet.occurrences > 4) { + if (repet.occurrences > 10) { await UpdateTicketService({ ticketData: { status: "pending", queueId: queues[0].id }, ticketId: ticket.id @@ -884,7 +884,7 @@ const handleMessage = async ( console.log("repet.occurrences: ", repet.occurrences); - if (repet.occurrences > 4) { + if (repet.occurrences > 10) { await transferTicket(0, wbot, ticket); await SendWhatsAppMessage({ diff --git a/frontend/src/components/NotificationsPopOver/index.js b/frontend/src/components/NotificationsPopOver/index.js index b14678d..63f52a4 100644 --- a/frontend/src/components/NotificationsPopOver/index.js +++ b/frontend/src/components/NotificationsPopOver/index.js @@ -217,43 +217,76 @@ const NotificationsPopOver = () => { } }) + socket.on('notifyPeding', data =>{ + handleNotifications("", data); + }); + return () => { socket.disconnect() } }, [user]) - const handleNotifications = data => { - const { message, contact, ticket } = data + const handleNotifications = (data, notify) => { + let isQueue = false; + if(!notify){ + const { message, contact, ticket } = data - const options = { - body: `${message.body} - ${format(new Date(), "HH:mm")}`, - icon: contact.profilePicUrl, - tag: ticket.id, - renotify: true, - } - - const notification = new Notification( - `${i18n.t("tickets.notification.message")} ${contact.name}`, - options - ) - - notification.onclick = e => { - e.preventDefault() - window.focus() - historyRef.current.push(`/tickets/${ticket.id}`) - } - - setDesktopNotifications(prevState => { - const notfiticationIndex = prevState.findIndex( - n => n.tag === notification.tag - ) - if (notfiticationIndex !== -1) { - prevState[notfiticationIndex] = notification - return [...prevState] + const options = { + body: `${message.body} - ${format(new Date(), "HH:mm")}`, + icon: contact.profilePicUrl, + tag: ticket.id, + renotify: true, } - return [notification, ...prevState] - }) + const notification = new Notification( + `${i18n.t("tickets.notification.message")} ${contact.name}`, + options + ) + + notification.onclick = e => { + e.preventDefault() + window.focus() + historyRef.current.push(`/tickets/${ticket.id}`) + } + + setDesktopNotifications(prevState => { + const notfiticationIndex = prevState.findIndex( + n => n.tag === notification.tag + ) + if (notfiticationIndex !== -1) { + prevState[notfiticationIndex] = notification + return [...prevState] + } + return [notification, ...prevState] + }) + }else{ + user.queues.forEach(queue =>{ + if(queue.id === notify.data.queue?.id){ + isQueue = true; + } + }) + } + if(!isQueue && notify){ + return; + }else{ + const notification = new Notification(`${i18n.t("tickets.notification.messagePeding")} ${notify.data.queue?.name}`); + notification.onclick = e => { + e.preventDefault() + window.focus() + historyRef.current.push(`/tickets`) + } + + setDesktopNotifications(prevState => { + const notfiticationIndex = prevState.findIndex( + n => n.tag === notification.tag + ) + if (notfiticationIndex !== -1) { + prevState[notfiticationIndex] = notification + return [...prevState] + } + return [notification, ...prevState] + }) + } soundAlertRef.current() } diff --git a/frontend/src/translate/languages/en.js b/frontend/src/translate/languages/en.js index 7410d89..a499d94 100644 --- a/frontend/src/translate/languages/en.js +++ b/frontend/src/translate/languages/en.js @@ -241,6 +241,7 @@ const messages = { }, notification: { message: "Message from", + messagePeding: "new ticket in queue", }, tabs: { open: { title: "Inbox" }, diff --git a/frontend/src/translate/languages/es.js b/frontend/src/translate/languages/es.js index 6e047b2..a2c9f3a 100644 --- a/frontend/src/translate/languages/es.js +++ b/frontend/src/translate/languages/es.js @@ -245,6 +245,7 @@ const messages = { }, notification: { message: "Mensaje de", + messagePeding: "Nuevo billete en cola", }, tabs: { open: { title: "Bandeja" }, diff --git a/frontend/src/translate/languages/pt.js b/frontend/src/translate/languages/pt.js index 69117b9..13b220b 100644 --- a/frontend/src/translate/languages/pt.js +++ b/frontend/src/translate/languages/pt.js @@ -244,6 +244,7 @@ const messages = { }, notification: { message: "Mensagem de", + messagePeding: "Novo ticket na fila", }, tabs: { open: { title: "Inbox" },