|
@@ -296,6 +296,102 @@ const sentMessage = async (req, res, next) => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+const sentMessageReply = async (req, res, next) => {
|
|
|
+ try {
|
|
|
+ const { id, newMessage, newCaption } = req.body;
|
|
|
+ const idTime = Math.round(Date.now() / 1000);
|
|
|
+ const userId = req.user.id;
|
|
|
+ const number = req.user.number;
|
|
|
+ const userMessage = await MessageModel.getById(id, userId);
|
|
|
+ const companionMessage = await MessageModel.findByFields(
|
|
|
+ userId,
|
|
|
+ userMessage.idTime,
|
|
|
+ userMessage.companionId
|
|
|
+ );
|
|
|
+ const isChat = await ChatModel.getByField(userMessage.companionId, userId);
|
|
|
+ const isCompanionChat = await ChatModel.getByField(
|
|
|
+ userId,
|
|
|
+ userMessage.companionId
|
|
|
+ );
|
|
|
+ if (isChat && isCompanionChat && userMessage && companionMessage) {
|
|
|
+ const {
|
|
|
+ message,
|
|
|
+ name,
|
|
|
+ lastName,
|
|
|
+ avatarUrl,
|
|
|
+ color,
|
|
|
+ caption,
|
|
|
+ fullType,
|
|
|
+ newMessage: oldMessage,
|
|
|
+ newCaption: oldCaption,
|
|
|
+ } = userMessage;
|
|
|
+ const sentMessage = await MessageModel.add({
|
|
|
+ message: oldMessage ? oldMessage : message,
|
|
|
+ newMessage,
|
|
|
+ name,
|
|
|
+ lastName,
|
|
|
+ avatarUrl,
|
|
|
+ color,
|
|
|
+ number,
|
|
|
+ type: 'text',
|
|
|
+ fullType,
|
|
|
+ caption: oldCaption ? oldCaption : caption,
|
|
|
+ newCaption,
|
|
|
+ idTime,
|
|
|
+ oldId: id,
|
|
|
+ companionIdFlow: userId,
|
|
|
+ companionId: userMessage.companionId,
|
|
|
+ owner: userId,
|
|
|
+ });
|
|
|
+ await MessageModel.add({
|
|
|
+ message,
|
|
|
+ newMessage,
|
|
|
+ name,
|
|
|
+ lastName,
|
|
|
+ avatarUrl,
|
|
|
+ color,
|
|
|
+ number,
|
|
|
+ type: 'text',
|
|
|
+ fullType,
|
|
|
+ caption,
|
|
|
+ newCaption,
|
|
|
+ idTime,
|
|
|
+ oldId: companionMessage._id,
|
|
|
+ companionIdFlow: userId,
|
|
|
+ companionId: userId,
|
|
|
+ owner: userMessage.companionId,
|
|
|
+ });
|
|
|
+ const { total } = await MessageModel.getList(
|
|
|
+ { owner: userId, companionId: userMessage.companionId },
|
|
|
+ {}
|
|
|
+ );
|
|
|
+ await ChatModel.update(isChat._id, userId, {
|
|
|
+ total,
|
|
|
+ seen: total,
|
|
|
+ watched: false,
|
|
|
+ lastMessage: newMessage,
|
|
|
+ lastMessageCreatedAt: sentMessage.createdAt,
|
|
|
+ });
|
|
|
+ const { total: Total } = await MessageModel.getList(
|
|
|
+ { owner: userMessage.companionId, companionId: userId },
|
|
|
+ {}
|
|
|
+ );
|
|
|
+ await ChatModel.update(isCompanionChat._id, userMessage.companionId, {
|
|
|
+ total: Total,
|
|
|
+ lastMessage: newMessage,
|
|
|
+ lastMessageCreatedAt: sentMessage.createdAt,
|
|
|
+ });
|
|
|
+ return res.status(201).json({
|
|
|
+ status: 'success',
|
|
|
+ code: 201,
|
|
|
+ data: sentMessage,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ next(e);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
const imageMessage = async (req, res, next) => {
|
|
|
try {
|
|
|
const userId = req.user.id;
|
|
@@ -661,6 +757,7 @@ module.exports = {
|
|
|
unpinAllMessage,
|
|
|
listMessagesById,
|
|
|
sentMessage,
|
|
|
+ sentMessageReply,
|
|
|
imageMessage,
|
|
|
audioMessage,
|
|
|
videoMessage,
|