wa_strapi
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 line
2.5 KiB

  1. "use strict";
  2. const messageModel = require("../model/messageModel");
  3. const { parseMultipartData, sanitizeEntity } = require("strapi-utils");
  4. const moment = require("moment");
  5. const refreshChat = async function (client, sessionsId) {
  6. try {
  7. if (client && sessionsId) {
  8. var chatId;
  9. var result = await messageModel.getAllChats(client);
  10. if (result["STATUS"] == 1) {
  11. for (var i = 0; i < result["DATA"].length; i++) {
  12. var chatsExist = await strapi.api["chats"].services[
  13. "chats"
  14. ].findOne({
  15. session_key: sessionsId,
  16. phoneNumber: result["DATA"][i]["id"].user,
  17. });
  18. if (!chatsExist) {
  19. await strapi.query("chats").create({
  20. session_key: sessionsId,
  21. name: result["DATA"][i]["name"],
  22. unreadCount: result["DATA"][i]["unreadCount"],
  23. timestamp: moment
  24. .unix(result["DATA"][i]["timestamp"])
  25. .toDate(),
  26. chatId: result["DATA"][i]["id"],
  27. phoneNumber: result["DATA"][i]["id"].user,
  28. });
  29. chatsExist = await strapi.api["chats"].services[
  30. "chats"
  31. ].findOne({
  32. session_key: sessionsId,
  33. phoneNumber: result["DATA"][i]["id"].user,
  34. });
  35. }
  36. chatId = chatsExist.id;
  37. var messages = await messageModel.getMessagebyId(
  38. client,
  39. result["DATA"][i]["id"]
  40. );
  41. if (messages["STATUS"] == 1) {
  42. for (var j = 0; j < messages["DATA"].length; j++) {
  43. var Exist = await strapi.api["message"].services[
  44. "message"
  45. ].findOne({
  46. messageId: messages["DATA"][j]["id"].id,
  47. });
  48. if (!Exist) {
  49. // console.log(chatId);
  50. await strapi.query("message").create({
  51. messageId: messages["DATA"][j]["id"].id,
  52. to: messages["DATA"][j]["to"],
  53. from: messages["DATA"][j]["from"],
  54. body: messages["DATA"][j]["body"],
  55. state: messages["DATA"][j]["fromMe"]
  56. ? "SENT"
  57. : "RECIEVED",
  58. isForwarded:
  59. messages["DATA"][j]["isForwarded"] ==
  60. undefined
  61. ? false
  62. : messages["DATA"][j][
  63. "isForwarded"
  64. ],
  65. chat_key: chatId,
  66. timestamp: moment
  67. .unix(messages["DATA"][j]["timestamp"])
  68. .toDate(),
  69. });
  70. }
  71. }
  72. }
  73. }
  74. } else {
  75. throw { message: result["DATA"] };
  76. }
  77. }
  78. // console.log("done populating chats");
  79. } catch (e) {
  80. console.log("error", e.message || e);
  81. // return { STATUS: 0, DATA: e.message || e };
  82. }
  83. };
  84. module.exports = {
  85. refreshChat: refreshChat,
  86. };