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