Merge branch 'master' of github.com:AdrianoRobson/projeto-hit

feat-scaling-ticket-remote-creation
adriano 2024-03-18 15:21:42 -03:00
commit e80ed8d092
8 changed files with 78 additions and 34 deletions

2
.gitignore vendored
View File

@ -40,6 +40,8 @@ WWebJS
.env.development.local
.env.test.local
.env.production.local
.env.save
nano.save
npm-debug.log*
yarn-debug.log*

View File

@ -1,5 +1,5 @@
class AppError {
public readonly message: string;
public message: string;
public readonly statusCode: number;

View File

@ -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;
}

View File

@ -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({

View File

@ -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()
}

View File

@ -241,6 +241,7 @@ const messages = {
},
notification: {
message: "Message from",
messagePeding: "new ticket in queue",
},
tabs: {
open: { title: "Inbox" },

View File

@ -245,6 +245,7 @@ const messages = {
},
notification: {
message: "Mensaje de",
messagePeding: "Nuevo billete en cola",
},
tabs: {
open: { title: "Bandeja" },

View File

@ -244,6 +244,7 @@ const messages = {
},
notification: {
message: "Mensagem de",
messagePeding: "Novo ticket na fila",
},
tabs: {
open: { title: "Inbox" },