fix: resolve issue of creating multiple contacts for the same WhatsApp number of a client

Details:
- Fixed the bug that allowed the creation of more than one contact for the same WhatsApp number of a client.
feat-resolve-contact-duplicate
gustavo-gsp 2024-09-06 16:59:23 -03:00
parent 05c9f3af6d
commit f4f5dad8d2
3 changed files with 29 additions and 12 deletions

View File

@ -1,5 +1,6 @@
import { getIO } from "../../libs/socket"; import { getIO } from "../../libs/socket";
import Contact from "../../models/Contact"; import Contact from "../../models/Contact";
const { Op } = require('sequelize');
import { createOrUpdateContactCache } from '../../helpers/ContactsCache' import { createOrUpdateContactCache } from '../../helpers/ContactsCache'
import { tr } from "date-fns/locale"; import { tr } from "date-fns/locale";
@ -35,15 +36,37 @@ const CreateOrUpdateContactService = async ({
const io = getIO(); const io = getIO();
let contact: Contact | null; let contact: Contact | null;
const firstFourDigits = number.slice(0, 4);
contact = await Contact.findOne({ where: { number } }); const lastEightDigits = number.slice(-8);
//const numberFormat = number?.length === 13 && number[4] == '9' ? number.slice(0, 4) + number.slice(0, 4) : number;
//contact = await Contact.findOne({ where: { number } });
contact = await Contact.findOne({
where: {
[Op.and]: [
{
number: {
[Op.like]: `%${firstFourDigits}%`
}
},
{
number: {
[Op.like]: `%${lastEightDigits}%`
}
}
]
}
});
if (contact) { if (contact) {
contact.update({ profilePicUrl });
// TEST DEL if(contact.number == number){
await createOrUpdateContactCache(`contact:${contact.id}`, { profilePicUrl }) contact.update({ profilePicUrl });
// await createOrUpdateContactCache(`contact:${contact.id}`, { profilePicUrl })
} else{
contact.update({ profilePicUrl, number });
await createOrUpdateContactCache(`contact:${contact.id}`, { profilePicUrl, number })
}
io.emit("contact", { io.emit("contact", {
action: "update", action: "update",

View File

@ -101,8 +101,6 @@ const FindOrCreateTicketServiceBot = async (
unreadMessages unreadMessages
}); });
console.log("lxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
await dialogFlowStartContext(contact, ticket, botInfo); await dialogFlowStartContext(contact, ticket, botInfo);
} }
} }
@ -128,8 +126,6 @@ const FindOrCreateTicketServiceBot = async (
phoneNumberId phoneNumberId
}); });
console.log("yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy");
await dialogFlowStartContext(contact, ticket, botInfo); await dialogFlowStartContext(contact, ticket, botInfo);
} }

View File

@ -748,8 +748,6 @@ const handleMessage = async (
// console.log('----------> chat: ', JSON.parse(JSON.stringify(chat))) // console.log('----------> chat: ', JSON.parse(JSON.stringify(chat)))
console
if (chat.isGroup) { if (chat.isGroup) {
// let msgGroupContact; // let msgGroupContact;