fix chat department message total count

This commit is contained in:
amazuecos
2024-11-13 08:31:27 +01:00
parent e21e790309
commit a285764c2c
3 changed files with 36 additions and 17 deletions

View File

@ -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
];
}

View File

@ -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;
}
}

View File

@ -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}
</p>
</div>
<span class="badge badge-center rounded-pill bg-danger messages-unread-contact">${row.totalMessages}</span>
<span class="badge badge-center rounded-pill bg-danger messages-unread-contact">${row.totalMessages ?? 0}</span>
</a>
</li>
`
@ -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}`,