const axios = require("axios"); const { splitSite } = require("../middlewares"); const db = require("../models"); const Message = db.message; const MessageToken = db.message_token; const SentMessage = db.sent_message; exports.createMessage = (req, res) => { // Validate request if (!req.body.message_group) { res.status(400).send({ message: "Message Group can not be empty!" }); return; } const site = splitSite.findSiteNumber(req); // Create a Message const message = new Message({ message_group: req.body.message_group || 0, message_name: req.body.message_name || '', message_title: req.body.message_title || '', message_body: req.body.message_body || '', language: req.body.language || '', site }); // Save Message in the database message .save(message) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while creating the Message." }); }); }; // Retrieve all Messages from the database. exports.getAllMessages = (req, res) => { var condition = {}; Message.find(condition) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while retrieving messages." }); }); }; // Retrieve messages By group and language exports.getMessagesByGroupAndLanguage= (req, res) => { const params = req.query; const message_group = params?.message_group; const language = params?.language; var condition = { message_group, language }; Message.find(condition) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while retrieving Messages with Date and Type." }); }); }; // Get One Message by Id exports.getMessage = (req, res) => { const id = req.params.id; Message.findById(id) .then(data => { if (!data) res.status(404).send({ message: "Not found Message with id " + id }); else res.send(data); }) .catch(err => { res .status(500) .send({ message: "Error retrieving Message with id=" + id }); }); }; // Update a Message by the id in the request exports.updateMessage = (req, res) => { if (!req.body) { return res.status(400).send({ message: "Data to update can not be empty!" }); } const id = req.params.id; Message.findByIdAndUpdate(id, req.body, { useFindAndModify: false }) .then(data => { if (!data) { res.status(404).send({ message: `Cannot update Message with id=${id}. Maybe Message was not found!` }); } else res.send({ success: true, message: "Message was updated successfully." }); }) .catch(err => { res.status(500).send({ success: false, message: "Error updating Message with id=" + id }); }); }; // exports.sendMessage = async (req, res) => { // console.log(req.body); // if (!req.body) { // return res.status(400).send({ // message: "Data to update can not be empty!" // }); // } // const authToken = await MessageToken.find({}); // if (authToken && authToken.length > 0) { // const token = authToken[0]?.message_token; // console.log('token', token); // await axios.post('https://api-app2.simpletexting.com/v2/api/messages', req.body, { // headers: { // "Authorization": `Bearer ${token}`, // "Content-Type": "application/json", // }, // }).then(() => { // res.send({success: true, message: "Message Sent Correctly"}) // }).catch(err => console.log(err)); // } // } // Retrieve all Sent Messages from the database. exports.getAllSentMessages = (req, res) => { var condition = {}; condition = splitSite.splitSiteGet(req, condition); SentMessage.find(condition) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while retrieving sent messages." }); }); }; exports.sendMessage = async (req, res) => { if (!req.body) { return res.status(400).send({ message: "Data to update can not be empty!" }); } const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const messages = req.body.messages; for(const message of messages) { try { await axios.post('https://rest.textmagic.com/api/v2/messages', { text: message?.text, phones: message?.contactPhone }, { headers: { "X-TM-Username": "oauthyhma", "X-TM-Key": "Rin866o0cMMAJXkCiIyYd2pw9HSeGo" } }) const site = splitSite.findSiteNumber(req); const sentMessage = new SentMessage({ from_type: 'center', from: message.from || 'center', to_type: 'client', to: message.contactPhone || '', department: message.department || '', content: message.text || '', status: 'active', create_by: 'admin', create_date: new Date(), site }); await sentMessage.save(sentMessage); await sleep(200); } catch (err) { console.log(err); } } res.send({success: true, message: "Message Sent Correctly"}); }