From a285764c2c3d7915d4cd647d427a981b7f64bc6c Mon Sep 17 00:00:00 2001
From: amazuecos
Date: Wed, 13 Nov 2024 08:31:27 +0100
Subject: [PATCH] fix chat department message total count
---
ci4/app/Models/Chat/ChatDeparmentModel.php | 18 +++------------
ci4/app/Models/Chat/ChatModel.php | 12 ++++++++++
httpdocs/assets/js/safekat/components/chat.js | 23 +++++++++++++++++--
3 files changed, 36 insertions(+), 17 deletions(-)
diff --git a/ci4/app/Models/Chat/ChatDeparmentModel.php b/ci4/app/Models/Chat/ChatDeparmentModel.php
index 51af2f67..8f60babe 100644
--- a/ci4/app/Models/Chat/ChatDeparmentModel.php
+++ b/ci4/app/Models/Chat/ChatDeparmentModel.php
@@ -53,7 +53,7 @@ class ChatDeparmentModel extends Model
public function getChatDepartments(string $type = "general"): array
{
$userModel = model(UserModel::class);
- $chatMessageModel = model(ChatMessageModel::class);
+ $chatModel = model(ChatModel::class);
$query = $this->builder()
->select(
@@ -63,7 +63,6 @@ class ChatDeparmentModel extends Model
'chat_departments.name',
'chat_departments.display',
'chat_department_users.user_id',
- 'chats.id as chatId',
]
)
->join(
@@ -71,18 +70,14 @@ class ChatDeparmentModel extends Model
"chat_department_users.chat_department_id = chat_departments.id",
'left'
)
- ->join("chats", "chats.chat_department_id = chat_departments.id", "left")
->join(
"users",
"chat_department_users.user_id = users.id",
'left'
- )->join(
- "chat_messages",
- "chat_messages.chat_id = chats.id",
- "left"
)
->where("chat_departments.type", $type);
+
// if (auth()->user()->cliente_id == null) {
// $query->where("chat_department_users.user_id", auth()->user()->id);
// }
@@ -92,20 +87,13 @@ class ChatDeparmentModel extends Model
$departments = [];
foreach ($results as $row) {
$departmentName = $row['name'];
- $totalMessages = 0;
-
// If the department is not yet added to the array, initialize it
if (!isset($departments[$departmentName])) {
- if($row['chatId']){
- $data["messages"] = $chatMessageModel->get_chat_messages($row['chatId']);
- $totalMessages = count($data["messages"]);
-
- }
+
$departments[$departmentName] = [
'id' => $row['id'],
'name' => $row['name'],
'display' => $row['display'],
- 'totalMessages' => $totalMessages,
'users' => [] // Initialize users as an empty array
];
}
diff --git a/ci4/app/Models/Chat/ChatModel.php b/ci4/app/Models/Chat/ChatModel.php
index d296be7e..057a9153 100644
--- a/ci4/app/Models/Chat/ChatModel.php
+++ b/ci4/app/Models/Chat/ChatModel.php
@@ -611,5 +611,17 @@ class ChatModel extends Model
return $q->get()->getResultObject();
}
+ public function getChatDepartmentMessagesCount(int $chat_id,int $chat_department_id) : int
+ {
+ $q = $this->builder()->select([
+ "chat_messages.id"
+ ])
+ ->join("chat_messages","chat_messages.chat_id = chats.id",'left')
+ ->where("chats.chat_department_id",$chat_department_id)
+ ->where("chats.id",$chat_id)
+ ->countAllResults();
+ return $q;
+
+ }
}
diff --git a/httpdocs/assets/js/safekat/components/chat.js b/httpdocs/assets/js/safekat/components/chat.js
index 02829449..79003692 100644
--- a/httpdocs/assets/js/safekat/components/chat.js
+++ b/httpdocs/assets/js/safekat/components/chat.js
@@ -142,7 +142,8 @@ class Chat {
_handleGetChatListSuccess(data) {
Object.values(data).map(row => {
this.chatList.append(this._getContact(row))
-
+ this.chatDeparmentId = row.id
+ this._getChatTotalMessages(row.name)
this.chatList.find(`#chat_${row.name}`).on("click", (event) => {
$(".chat-contact-list-item").removeClass("active")
$(event.currentTarget).parent().addClass("active")
@@ -215,7 +216,7 @@ class Chat {
${row.display}
- ${row.totalMessages}
+ ${row.totalMessages ?? 0}
`
@@ -235,6 +236,24 @@ class Chat {
);
ajax.get();
}
+ _getChatDepartmentMessageCount()
+ {
+ let ajax = new Ajax(
+ `/chat/department/count/${this.chatType}/${this.chatDeparmentId}/${this.modelId}`,
+ null,
+ null,
+ this._getChatDepartmentMessageCountSuccess.bind(this),
+ this._getChatDepartmentMessageCountError.bind(this),
+
+
+ );
+ ajax.get();
+ }
+ _getChatDepartmentMessageCountSuccess(data){
+ this.domItem.find(`chat_${data.name}`).find(".messages-unread-contact").text(data.count)
+ }
+ _getChatDepartmentMessageCountError(){}
+
_getChatMessage() {
let ajax = new Ajax(
`/chat/department/${this.chatType}/${this.chatDeparmentId}/${this.modelId}`,