Merge branch 'fix/permisos-mensajeria-sidebar' into 'main'

Fix/permisos mensajeria sidebar

See merge request jjimenez/safekat!665
This commit is contained in:
Alvaro
2025-04-06 07:50:27 +00:00
12 changed files with 35 additions and 43 deletions

View File

@ -5,6 +5,7 @@
return [
'apellidos' => 'Apellidos',
'cargo' => 'Cargo',
'cargo_null' => 'Sin cargo',
'cliente' => 'Cliente ID',
'cliente-contactos' => 'Contactos de cliente',
'clienteId' => 'Cliente ID',

View File

@ -770,7 +770,7 @@ class ChatModel extends Model
->join("users u", "u.id = cm.sender_id", 'left')
->where("chats.presupuesto_id is NOT NULL", NULL, FALSE);
if (auth()->user()->inGroup("admin") == false) {
if (auth()->user()->inGroup("cliente-administrador","cliente")) {
$query->where('presupuestos.cliente_id', auth()->user()->cliente_id)
->where("chats.chat_department_id is NOT NULL", NULL, FALSE);
}
@ -801,7 +801,7 @@ class ChatModel extends Model
->join("presupuestos", "presupuestos.id = pedidos_linea.presupuesto_id", 'left')
->where("chats.pedido_id is NOT NULL", NULL, FALSE);
if (auth()->user()->inGroup("admin") == false) {
if (auth()->user()->inGroup("cliente-administrador","cliente")) {
$query->where('presupuestos.cliente_id', auth()->user()->cliente_id)
->where("chats.chat_department_id is NOT NULL", NULL, FALSE);
}
@ -831,12 +831,10 @@ class ChatModel extends Model
->join("facturas", "facturas.id = chats.factura_id", "left")
->where("chats.factura_id is NOT NULL", NULL, FALSE);
if (auth()->user()->inGroup("admin") == false) {
if (auth()->user()->inGroup("admin") == false) {
if (auth()->user()->inGroup("cliente-administrador","cliente")) {
$query->where('facturas.cliente_id', auth()->user()->cliente_id)
->where("chats.chat_department_id is NOT NULL", NULL, FALSE);
}
}
return $query->groupBy('chatMessageId');
}
public function createNewDirectChat(string $title, string $message, array $users)

View File

@ -596,7 +596,7 @@ class ClienteModel extends \App\Models\BaseModel
$query = $this->builder()->select([
"cliente_contactos.id",
"CONCAT(COALESCE(cliente_contactos.nombre,''),' ',COALESCE(cliente_contactos.apellidos,'')) as name",
'cliente_contactos.cargo as description'
"COALESCE(cliente_contactos.cargo,'".lang("ClienteContactos.cargo_null")."') as description"
])
->join('cliente_contactos', 'cliente_contactos.cliente_id = clientes.id', 'left')
->where('cliente_contactos.deleted_at',null)

View File

@ -26,7 +26,7 @@
</div>
<hr class="container-m-nx m-0" />
<div class="sidebar-body">
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')): ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
<div class="mb-0 px-4 pt-3 pb-2">
<select class="form-control chat-search-client"></select>
</div>
@ -68,7 +68,7 @@
</div>
<div class="d-flex align-items-center">
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')): ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
<div class="ml-2 px-2">
<button type="button" class="btn btn-danger btn-sm exit-chat">
@ -121,7 +121,7 @@
placeholder="<?= lang('Chat.write_message_placeholder') ?>" />
<div class="message-actions d-flex align-items-center">
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')): ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
<button type="button" class="btn btn-primary d-flex send-msg-btn" style="color:white"
id="send-msg-btn-deparment" disabled>
<i class="ti ti-send me-md-1 me-0"></i>

View File

@ -13,19 +13,19 @@
<div class="nav-align-top">
<ul class="nav nav-pills mb-4" role="tablist">
<li class="nav-item">
<button type="button" class="nav-link <?=!auth()->user()->inGroup('cliente-editor','cliente') ? "" : "active" ?>" role="tab" data-bs-toggle="tab" data-bs-target="#navs-pills-top-chat" aria-controls="navs-pills-top-internal-chat" aria-selected="false"><?=lang('Chat.messages_client')?></button>
<button type="button" class="nav-link <?=!auth()->user()->inGroup('cliente-administrador','cliente') ? "" : "active" ?>" role="tab" data-bs-toggle="tab" data-bs-target="#navs-pills-top-chat" aria-controls="navs-pills-top-internal-chat" aria-selected="false"><?=lang('Chat.messages_client')?></button>
</li>
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')) { ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')) { ?>
<li class="nav-item">
<button type="button" class="nav-link active" role="tab" data-bs-toggle="tab" data-bs-target="#navs-pills-top-internal-messages" aria-controls="navs-pills-top-internal-messages" aria-selected="false"><?=lang('Chat.messages_internal')?></button>
</li>
<?php } ?>
</ul>
<div class="tab-content">
<div class="tab-pane fade <?=!auth()->user()->inGroup('cliente-editor','cliente') ? "" : "show active" ?>" id="navs-pills-top-chat" role="tabpanel">
<div class="tab-pane fade <?=!auth()->user()->inGroup('cliente-administrador','cliente') ? "" : "show active" ?>" id="navs-pills-top-chat" role="tabpanel">
<?= view("themes/vuexy/components/chat_factura", data: ["modelId" => $modelId,"type" => "factura"]) ?>
</div>
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')) { ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')) { ?>
<div class="tab-pane fade show active" id="navs-pills-top-internal-messages" role="tabpanel">
<?= view("themes/vuexy/components/internal_messages", data: ["modelId" => $modelId,"type" => "factura"]) ?>
</div>

View File

@ -13,19 +13,19 @@
<div class="nav-align-top">
<ul class="nav nav-pills mb-4" role="tablist">
<li class="nav-item">
<button type="button" class="nav-link <?=!auth()->user()->inGroup('cliente-editor','cliente') ? "" : "active" ?>" role="tab" data-bs-toggle="tab" data-bs-target="#navs-pills-top-chat" aria-controls="navs-pills-top-internal-chat" aria-selected="false"><?=lang('Chat.messages_client')?></button>
<button type="button" class="nav-link <?=!auth()->user()->inGroup('cliente-administrador','cliente') ? "" : "active" ?>" role="tab" data-bs-toggle="tab" data-bs-target="#navs-pills-top-chat" aria-controls="navs-pills-top-internal-chat" aria-selected="false"><?=lang('Chat.messages_client')?></button>
</li>
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')) { ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')) { ?>
<li class="nav-item">
<button type="button" class="nav-link active" role="tab" data-bs-toggle="tab" data-bs-target="#navs-pills-top-internal-messages" aria-controls="navs-pills-top-internal-messages" aria-selected="false"><?=lang('Chat.messages_internal')?></button>
</li>
<?php } ?>
</ul>
<div class="tab-content">
<div class="tab-pane fade <?=!auth()->user()->inGroup('cliente-editor','cliente') ? "" : "show active" ?>" id="navs-pills-top-chat" role="tabpanel">
<div class="tab-pane fade <?=!auth()->user()->inGroup('cliente-administrador','cliente') ? "" : "show active" ?>" id="navs-pills-top-chat" role="tabpanel">
<?= view("themes/vuexy/components/chat_pedido", data: ["modelId" => $modelId, "type" => "pedido"]) ?>
</div>
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')) { ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')) { ?>
<div class="tab-pane fade show active" id="navs-pills-top-internal-messages" role="tabpanel">
<?= view("themes/vuexy/components/internal_messages", data: ["modelId" => $modelId, "type" => "pedido"]) ?>
</div>

View File

@ -13,19 +13,19 @@
<div class="nav-align-top">
<ul class="nav nav-pills mb-4" role="tablist">
<li class="nav-item">
<button type="button" class="nav-link <?= !auth()->user()->inGroup('cliente-editor','cliente') ? "" : "active" ?>" role="tab" data-bs-toggle="tab" data-bs-target="#navs-pills-top-chat" aria-controls="navs-pills-top-internal-chat" aria-selected="false"><?= lang('Chat.messages_client') ?></button>
<button type="button" class="nav-link <?= !auth()->user()->inGroup('cliente-administrador','cliente') ? "" : "active" ?>" role="tab" data-bs-toggle="tab" data-bs-target="#navs-pills-top-chat" aria-controls="navs-pills-top-internal-chat" aria-selected="false"><?= lang('Chat.messages_client') ?></button>
</li>
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')) { ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')) { ?>
<li class="nav-item">
<button type="button" class="nav-link active" role="tab" data-bs-toggle="tab" data-bs-target="#navs-pills-top-internal-messages" aria-controls="navs-pills-top-internal-messages" aria-selected="false"><?= lang('Chat.messages_internal') ?></button>
</li>
<?php } ?>
</ul>
<div class="tab-content">
<div class="tab-pane fade <?= !auth()->user()->inGroup('cliente-editor','cliente') ? "" : "show active" ?>" id="navs-pills-top-chat" role="tabpanel">
<div class="tab-pane fade <?= !auth()->user()->inGroup('cliente-administrador','cliente') ? "" : "show active" ?>" id="navs-pills-top-chat" role="tabpanel">
<?= view("themes/vuexy/components/chat_presupuesto", data: ["modelId" => $modelId, "type" => "presupuesto"]) ?>
</div>
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')) { ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')) { ?>
<div class="tab-pane fade show active" id="navs-pills-top-internal-messages" role="tabpanel">
<?= view("themes/vuexy/components/internal_messages", data: ["modelId" => $modelId, "type" => "presupuesto"]) ?>
</div>

View File

@ -27,7 +27,7 @@
<hr class="container-m-nx m-0" />
<div class="sidebar-body">
<div class="chat-contact-list-item-title">
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')): ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
<div class="mb-0 px-4 pt-3 pb-2">
<select class="form-control chat-search-client"></select>
</div>
@ -67,7 +67,7 @@
</div>
<div class="d-flex align-items-center">
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')): ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
<div class="ml-2 px-2">
<button type="button" class="btn btn-danger btn-sm exit-chat">
@ -118,7 +118,7 @@
<input class="form-control message-input border-0 me-3 shadow-none"
placeholder="<?= lang('Chat.write_message_placeholder') ?>" />
<div class="message-actions d-flex align-items-center">
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')): ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
<button type="button" class="btn btn-primary d-flex send-msg-btn" style="color:white"
id="send-msg-btn-deparment" disabled>
<i class="ti ti-send me-md-1 me-0"></i>

View File

@ -26,7 +26,7 @@
<hr class="container-m-nx m-0" />
<div class="sidebar-body">
<div class="chat-contact-list-item-title">
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')): ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
<div class="mb-0 px-4 pt-3 pb-2">
<select class="form-control chat-search-client"></select>
</div>
@ -69,7 +69,7 @@
</div>
<div class="d-flex align-items-center">
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')): ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
<div class="ml-2 px-2">
<button type="button" class="btn btn-danger btn-sm exit-chat">
@ -117,7 +117,7 @@
<input class="form-control message-input border-0 me-3 shadow-none"
placeholder="<?= lang('Chat.write_message_placeholder') ?>" />
<div class="message-actions d-flex align-items-center">
<?php if (!auth()->user()->inGroup('cliente-editor','cliente')): ?>
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
<button type="button" class="btn btn-primary d-flex send-msg-btn" style="color:white"
id="send-msg-btn-deparment" disabled>
<i class="ti ti-send me-md-1 me-0"></i>

View File

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

View File

@ -7,6 +7,7 @@ class MessagesDatatable {
this.datatablePresupuestoMessageItem = this.item.find("#tablePresupuestoMessages")
this.datatablePedidoMessageItem = this.item.find("#tablePedidoMessages")
this.datatableFacturaMessageItem = this.item.find("#tableFacturaMessages")
this.focusTable = this.datatableItem
this.columnDefs = [
]
this.datatableColumns = [
@ -49,7 +50,7 @@ class MessagesDatatable {
init() {
this.item.on('click', '.btn-notification-viewed', (event) => {
const chatMessageId = $(event.currentTarget).data('id')
$(`#dropdown-viewed-${chatMessageId}`).empty()
this.focusTable.find(`#dropdown-viewed-${chatMessageId}`).empty()
this.handleDropUp(chatMessageId)
})
@ -160,27 +161,15 @@ class MessagesDatatable {
const notifications = response.data.notifications
if (notifications.length > 0) {
notifications.forEach(user => {
if (user.userFullName || user.userName) {
$(`#dropdown-viewed-${chat_message_id}`)
console.log(user.userFullName)
this.focusTable.find(`#dropdown-viewed-${chat_message_id}`)
.append(this.addDropUpItem(user))
}
});
}
// if (viewedNotifications.length > 0) {
// viewedNotifications.forEach(user => {
// if (user.userFullName || user.userName) {
// $(`#dropdown-viewed-${chat_message_id}`)
// .append(this.addDropUpItem(user))
// }
// });
// }
}
handleDropUpError() { }
addDropUpItem(user)

View File

@ -40,15 +40,19 @@ class MessagePage {
$("#navs-top-align-all-tab").on("click",()=>{
this.messageDatatable.datatable.ajax.reload()
this.messageDatatable.focusTable = this.messageDatatable.datatableItem
})
$("#navs-top-align-presupuestos-tab").on("click",()=>{
this.messageDatatable.datatablePresupuestoMessage.ajax.reload()
this.messageDatatable.focusTable = this.messageDatatable.datatablePresupuestoMessageItem
})
$("#navs-top-align-pedidos-tab").on("click",()=>{
this.messageDatatable.datatablePedidoMessage.ajax.reload()
this.messageDatatable.focusTable = this.messageDatatable.datatablePedidoMessageItem
})
$("#navs-top-align-facturas-tab").on("click",()=>{
this.messageDatatable.datatableFacturaMessage.ajax.reload()
this.messageDatatable.focusTable = this.messageDatatable.datatableFacturaMessageItem
})
}