fix : mensajes internos, arreglar total numero mensajes

This commit is contained in:
amazuecos
2024-11-13 00:47:47 +01:00
parent b97e027920
commit eb604f3293
8 changed files with 64 additions and 30 deletions

View File

@ -178,20 +178,21 @@ class ChatController extends BaseController
"receiver_id" => $data["receiver_id"], "receiver_id" => $data["receiver_id"],
] ]
); );
$this->chatNotificationModel->insert(["chat_message_id" => $chat_message_id,"user_id" => auth()->user()->id]); $this->chatNotificationModel->insert(["chat_message_id" => $chat_message_id,"user_id" =>$data["receiver_id"]]);
$dataResponse = $this->chatMessageModel->find($chat_message_id); $dataResponse = $this->chatMessageModel->find($chat_message_id);
return $this->response->setJSON($dataResponse); return $this->response->setJSON($dataResponse);
} }
public function get_chat_internal_contacts() public function get_chat_internal_contacts()
{ {
if (auth()->user()->cliente_id) { $auth_user = auth()->user();
return $this->response->setJSON([]); if ($auth_user->cliente_id) {
} $users = $this->chatModel->getOpenChatCliente($auth_user->id);
$users = $this->userModel->builder() }else{
->where("cliente_id", null) $users = $this->userModel->builder()
->whereNotIn("id", [auth()->user()->id]) ->whereNotIn("id", [$auth_user->id])
->where("deleted_at", null) ->where("deleted_at", null)
->get()->getResultObject(); ->get()->getResultObject();
}
foreach ($users as $user) { foreach ($users as $user) {
$user->unreadMessages = $this->chatMessageModel->get_chat_messages_count($user->id); $user->unreadMessages = $this->chatMessageModel->get_chat_messages_count($user->id);
} }
@ -200,11 +201,11 @@ class ChatController extends BaseController
} }
public function get_chat_internal_contact(int $user_id) public function get_chat_internal_contact(int $user_id)
{ {
if (auth()->user()->cliente_id) { $auth_user = auth()->user();
return $this->response->setJSON([]); // if ($auth_user->cliente_id) {
} // return $this->response->setJSON([]);
// }
$users = $this->userModel->builder() $users = $this->userModel->builder()
->where("cliente_id", null)
->where("deleted_at", null) ->where("deleted_at", null)
->where("id", $user_id) ->where("id", $user_id)
->get()->getFirstRow(); ->get()->getFirstRow();
@ -224,6 +225,8 @@ class ChatController extends BaseController
$data = $this->clienteModel->getClienteDataPresupuestoPedidoFactura($cliente_id); $data = $this->clienteModel->getClienteDataPresupuestoPedidoFactura($cliente_id);
$response["totalMessages"] = 0; $response["totalMessages"] = 0;
$response["chatFacturas"] = $this->chatModel->getClienteChatFacturas($data["facturas"]); $response["chatFacturas"] = $this->chatModel->getClienteChatFacturas($data["facturas"]);
$mensajes_directos = $this->chatModel->getChatDirectMessageNotifications();
foreach ($response["chatFacturas"] as $key => $value) { foreach ($response["chatFacturas"] as $key => $value) {
$response["totalMessages"] += $value->unreadMessages; $response["totalMessages"] += $value->unreadMessages;
} }
@ -231,6 +234,10 @@ class ChatController extends BaseController
foreach ($response["chatPresupuestos"] as $key => $value) { foreach ($response["chatPresupuestos"] as $key => $value) {
$response["totalMessages"] += $value->unreadMessages; $response["totalMessages"] += $value->unreadMessages;
} }
foreach ($mensajes_directos as $value) {
$response["internals"][] = $value;
$response["totalMessages"] += $value->unreadMessages;
}
$response["chatPedidos"] = $this->chatModel->getClienteChatPedidos($data["pedidos"]); $response["chatPedidos"] = $this->chatModel->getClienteChatPedidos($data["pedidos"]);
foreach ($response["chatPedidos"] as $key => $value) { foreach ($response["chatPedidos"] as $key => $value) {
$response["totalMessages"] += $value->unreadMessages; $response["totalMessages"] += $value->unreadMessages;

View File

@ -55,7 +55,7 @@ class ChatDeparmentModel extends Model
$userModel = model(UserModel::class); $userModel = model(UserModel::class);
$chatMessageModel = model(ChatMessageModel::class); $chatMessageModel = model(ChatMessageModel::class);
$query = $this->db->table('chat_departments') $query = $this->builder()
->select( ->select(
[ [
@ -82,6 +82,7 @@ class ChatDeparmentModel extends Model
"left" "left"
) )
->where("chat_departments.type", $type); ->where("chat_departments.type", $type);
// if (auth()->user()->cliente_id == null) { // if (auth()->user()->cliente_id == null) {
// $query->where("chat_department_users.user_id", auth()->user()->id); // $query->where("chat_department_users.user_id", auth()->user()->id);
// } // }
@ -89,16 +90,22 @@ class ChatDeparmentModel extends Model
$results = $query->get()->getResultArray(); $results = $query->get()->getResultArray();
// Create the desired structure // Create the desired structure
$departments = []; $departments = [];
foreach ($results as $row) { foreach ($results as $row) {
$departmentName = $row['name']; $departmentName = $row['name'];
$totalMessages = 0;
// If the department is not yet added to the array, initialize it // If the department is not yet added to the array, initialize it
if (!isset($departments[$departmentName])) { if (!isset($departments[$departmentName])) {
if($row['chatId']){
$data["messages"] = $chatMessageModel->get_chat_messages($row['chatId']);
$totalMessages = count($data["messages"]);
}
$departments[$departmentName] = [ $departments[$departmentName] = [
'id' => $row['id'], 'id' => $row['id'],
'name' => $row['name'], 'name' => $row['name'],
'display' => $row['display'], 'display' => $row['display'],
'totalMessages' => $totalMessages,
'users' => [] // Initialize users as an empty array 'users' => [] // Initialize users as an empty array
]; ];
} }

View File

@ -115,6 +115,13 @@ class ChatMessageModel extends Model
->where("receiver_id", auth()->user()->id)->countAllResults(); ->where("receiver_id", auth()->user()->id)->countAllResults();
return $messagesFromReceiver; return $messagesFromReceiver;
} }
public function get_chat_department_messages_count(int $chat_id) : int
{
$chatDepartmentMessagesCount = $this->builder()
->where("id",$chat_id)
->countAllResults();
return $chatDepartmentMessagesCount;
}
public function get_chat_messages_count(int $sender_id): int public function get_chat_messages_count(int $sender_id): int
{ {
$messagesFromReceiver = $this->builder() $messagesFromReceiver = $this->builder()

View File

@ -599,6 +599,17 @@ class ChatModel extends Model
$userModel = model(UserModel::class); $userModel = model(UserModel::class);
return $userModel->find($first_message->sender_id); return $userModel->find($first_message->sender_id);
} }
public function getOpenChatCliente(int $user_id) : array
{
$q = $this->builder()->distinct()->select([
"users.*"
])
->join("chat_messages","chat_messages.chat_id = chats.id","left")
->join("users","users.id = chat_messages.sender_id","left")
->where("chat_messages.receiver_id",$user_id);
return $q->get()->getResultObject();
}
} }

View File

@ -37,7 +37,7 @@
<hr class="container-m-nx m-0" /> <hr class="container-m-nx m-0" />
<div class="sidebar-body"> <div class="sidebar-body">
<!-- Contacts --> <!-- CLIENTES -->
<ul class="list-unstyled chat-contact-list mb-0" id="contact-list"> <ul class="list-unstyled chat-contact-list mb-0" id="contact-list">
<li class="chat-contact-list-item chat-contact-list-item-title"> <li class="chat-contact-list-item chat-contact-list-item-title">
<h5 class="text-primary mb-0">Contactos</h5> <h5 class="text-primary mb-0">Contactos</h5>
@ -54,6 +54,7 @@
</li> --> </li> -->
</ul> </ul>
</div> </div>
</div> </div>
<!-- /Chat contacts --> <!-- /Chat contacts -->
@ -83,13 +84,13 @@
aria-expanded="false"> aria-expanded="false">
<i class="ti ti-dots-vertical"></i> <i class="ti ti-dots-vertical"></i>
</button> </button>
<div class="dropdown-menu dropdown-menu-end" <!-- <div class="dropdown-menu dropdown-menu-end"
aria-labelledby="chat-header-actions"> aria-labelledby="chat-header-actions">
<a class="dropdown-item" href="javascript:void(0);">Silenciar <a class="dropdown-item" href="javascript:void(0);">Silenciar
Conversacion</a> Conversacion</a>
<a class="dropdown-item" href="javascript:void(0);">Limpiar <a class="dropdown-item" href="javascript:void(0);">Limpiar
Conversacion</a> Conversacion</a>
</div> </div> -->
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,11 +1,12 @@
<?php <?php
/** /**
* MENU CLIENTES * MENU CLIENTES
*/ */
if (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')) { if (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')) {
if (auth()->user()->can('perfil.edit') || auth()->user()->can('direcciones.menu')) { if (auth()->user()->can('perfil.edit') || auth()->user()->can('direcciones.menu')) {
?> ?>
<!-- Clientes --> <!-- Clientes -->
<li class="menu-item"> <li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle"> <a href="javascript:void(0);" class="menu-link menu-toggle">
@ -27,14 +28,17 @@ if (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente
</a> </a>
</li> </li>
<?php } ?> <?php } ?>
</ul> </ul>
</li> </li>
<?php <?php
} }
} else { } else {
if (auth()->user()->can('clientes.menu') || if (
auth()->user()->can('plantilla-tarifa.menu')) { auth()->user()->can('clientes.menu') ||
?> auth()->user()->can('plantilla-tarifa.menu')
) {
?>
<!-- Clientes --> <!-- Clientes -->
<li class="menu-item"> <li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle"> <a href="javascript:void(0);" class="menu-link menu-toggle">
@ -56,12 +60,10 @@ if (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente
</a> </a>
</li> </li>
<?php } ?> <?php } ?>
</ul> </ul>
</li> </li>
<?php <?php
} }
} }
?> ?>

View File

@ -2,7 +2,7 @@
/** /**
* MENU MENSAJES * MENU MENSAJES
*/ */
if (auth()->user()->inGroup('beta')) { if (auth()->user()->inGroup('beta') || auth()->user()->inGroup('cliente-editor')) {
?> ?>
<!-- Messages --> <!-- Messages -->
<li class="menu-item"> <li class="menu-item">

View File

@ -215,7 +215,7 @@ class Chat {
${row.display} ${row.display}
</p> </p>
</div> </div>
<span class="badge badge-center rounded-pill bg-danger messages-unread-contact">0</span> <span class="badge badge-center rounded-pill bg-danger messages-unread-contact">${row.totalMessages}</span>
</a> </a>
</li> </li>
` `
@ -344,7 +344,6 @@ class Chat {
try { try {
if (contacts.length) { if (contacts.length) {
console.log(contacts)
contacts.map((c, index) => { contacts.map((c, index) => {
this._addContactToList(c) this._addContactToList(c)
@ -469,7 +468,7 @@ class Chat {
<h6 class="chat-contact-name text-truncate m-0">${contact?.first_name ?? "" + " " + <h6 class="chat-contact-name text-truncate m-0">${contact?.first_name ?? "" + " " +
contact?.last_name ?? ""}</h6> contact?.last_name ?? ""}</h6>
<p class="chat-contact-status text-muted text-truncate mb-0"> <p class="chat-contact-status text-muted text-truncate mb-0">
${contact.username} ${contact?.cliente_id ? "[CLIENTE]" : ""}${contact.username}
</p> </p>
</div> </div>
${contact.unreadMessages ? `<span ${contact.unreadMessages ? `<span