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}`,