mirror of
https://github.com/cheveguerra/whaticket-community.git
synced 2026-04-17 19:37:02 +00:00
68 lines
1.5 KiB
JavaScript
68 lines
1.5 KiB
JavaScript
const Contact = require("../models/Contact");
|
|
const Message = require("../models/Message");
|
|
const Sequelize = require("sequelize");
|
|
const { getIO } = require("../libs/socket");
|
|
const { getWbot } = require("./wbot");
|
|
|
|
exports.getContacts = async (req, res) => {
|
|
const { searchParam = "" } = req.query;
|
|
|
|
const lowerSerachParam = searchParam.toLowerCase();
|
|
|
|
const whereCondition = {
|
|
name: Sequelize.where(
|
|
Sequelize.fn("LOWER", Sequelize.col("name")),
|
|
"LIKE",
|
|
"%" + lowerSerachParam + "%"
|
|
),
|
|
};
|
|
|
|
//todo >> add contact number to search where condition
|
|
|
|
const contacts = await Contact.findAll({
|
|
where: whereCondition,
|
|
attributes: {
|
|
include: [
|
|
[
|
|
Sequelize.literal(`(
|
|
SELECT COUNT(*)
|
|
FROM messages AS message
|
|
WHERE
|
|
message.contactId = contact.id
|
|
AND
|
|
message.read = 0
|
|
|
|
)`),
|
|
"unreadMessages",
|
|
],
|
|
],
|
|
},
|
|
order: [["updatedAt", "DESC"]],
|
|
});
|
|
|
|
return res.json(contacts);
|
|
};
|
|
|
|
exports.createContact = async (req, res) => {
|
|
const wbot = getWbot();
|
|
const io = getIO();
|
|
const { number, name } = req.body;
|
|
|
|
const result = await wbot.isRegisteredUser(`55${number}@c.us`);
|
|
|
|
if (!result) {
|
|
return res
|
|
.status(400)
|
|
.json({ error: "The suplied number is not a valid Whatsapp number" });
|
|
}
|
|
const profilePicUrl = await wbot.getProfilePicUrl(`55${number}@c.us`);
|
|
|
|
const contact = await Contact.create({
|
|
name,
|
|
number: `55${number}`,
|
|
profilePicUrl,
|
|
});
|
|
|
|
res.status(200).json(contact);
|
|
};
|