192 lines
5.3 KiB
JavaScript
192 lines
5.3 KiB
JavaScript
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"});
|
|
}
|
|
|