Merge branch 'fix/new_chat_users' into 'main'

Arreglado problema al listar usuarios con select

See merge request jjimenez/safekat!878
This commit is contained in:
Ignacio Martinez Navajas
2025-07-09 11:22:03 +00:00

View File

@ -61,11 +61,13 @@ class ChatController extends BaseController
$this->chatService = service("chat"); $this->chatService = service("chat");
} }
public function index() {} public function index()
public function get_chat_departments(string $model,int $modelId) {
}
public function get_chat_departments(string $model, int $modelId)
{ {
$data = $this->chatService->getChatDepartments($model,$modelId); $data = $this->chatService->getChatDepartments($model, $modelId);
return $this->response->setJSON($data); return $this->response->setJSON($data);
} }
@ -250,7 +252,7 @@ class ChatController extends BaseController
public function store_message($model) public function store_message($model)
{ {
$data = $this->request->getPost(); $data = $this->request->getPost();
$chatMessageEntity = $this->chatService->storeChatMessage($data["chat_department_id"],$model,$data["model_id"],$data); $chatMessageEntity = $this->chatService->storeChatMessage($data["chat_department_id"], $model, $data["model_id"], $data);
return $this->response->setJSON($chatMessageEntity); return $this->response->setJSON($chatMessageEntity);
} }
@ -341,22 +343,26 @@ class ChatController extends BaseController
} }
public function get_chat_users_internal() public function get_chat_users_internal()
{ {
$query = $this->userModel->builder()->select( $builder = $this->userModel->builder();
[
"id", $builder->select([
"CONCAT(first_name,' ',last_name,'(',username,')') as name" 'users.id',
] "CONCAT(first_name, ' ', last_name, ' (', auth_identities.secret, ')') AS name"
)->where("cliente_id", null) ])
->where("deleted_at", null) ->join('auth_identities', 'auth_identities.user_id = users.id AND auth_identities.type = "email_password"')
->whereNotIn("id", [auth()->user()->id]); ->where('cliente_id', null)
if ($this->request->getGet("q")) { ->where('deleted_at', null)
$query->groupStart() ->whereNotIn('users.id', [auth()->user()->id]);
->orLike("users.username", $this->request->getGet("q"))
->orLike("CONCAT(first_name,' ',last_name)", $this->request->getGet("q")) if ($this->request->getGet('q')) {
$q = $this->request->getGet('q');
$builder->groupStart()
->orLike('auth_identities.secret', $q)
->orLike("CONCAT(first_name, ' ', last_name)", $q)
->groupEnd(); ->groupEnd();
} }
return $this->response->setJSON($query->get()->getResultObject()); return $this->response->setJSON($builder->get()->getResultObject());
} }
public function get_chat_users_all() public function get_chat_users_all()
{ {
@ -381,7 +387,7 @@ class ChatController extends BaseController
$pm = model(PresupuestoModel::class); $pm = model(PresupuestoModel::class);
$p = $pm->find($presupuesto_id); $p = $pm->find($presupuesto_id);
$cm = model(ClienteModel::class); $cm = model(ClienteModel::class);
$clienteContactos = $cm->querySelectClienteContacto($p->cliente_id,$this->request->getGet('q')); $clienteContactos = $cm->querySelectClienteContacto($p->cliente_id, $this->request->getGet('q'));
return $this->response->setJSON($clienteContactos); return $this->response->setJSON($clienteContactos);
} }
public function get_pedido_client_users(int $pedido_id) public function get_pedido_client_users(int $pedido_id)
@ -389,7 +395,7 @@ class ChatController extends BaseController
$pm = model(PedidoModel::class); $pm = model(PedidoModel::class);
$p = $pm->find($pedido_id); $p = $pm->find($pedido_id);
$cm = model(ClienteModel::class); $cm = model(ClienteModel::class);
$clienteContactos = $cm->querySelectClienteContacto($p->cliente()->id,$this->request->getGet('q')); $clienteContactos = $cm->querySelectClienteContacto($p->cliente()->id, $this->request->getGet('q'));
return $this->response->setJSON($clienteContactos); return $this->response->setJSON($clienteContactos);
} }
public function get_factura_client_users(int $factura_id) public function get_factura_client_users(int $factura_id)
@ -397,7 +403,7 @@ class ChatController extends BaseController
$fm = model(FacturaModel::class); $fm = model(FacturaModel::class);
$f = $fm->find($factura_id); $f = $fm->find($factura_id);
$cm = model(ClienteModel::class); $cm = model(ClienteModel::class);
$clienteContactos = $cm->querySelectClienteContacto($f->cliente_id,$this->request->getGet('q')); $clienteContactos = $cm->querySelectClienteContacto($f->cliente_id, $this->request->getGet('q'));
return $this->response->setJSON($clienteContactos); return $this->response->setJSON($clienteContactos);
} }
public function get_orden_trabajo_client_users(int $orden_trabajo_id) public function get_orden_trabajo_client_users(int $orden_trabajo_id)
@ -406,21 +412,21 @@ class ChatController extends BaseController
$ot = $otm->find($orden_trabajo_id); $ot = $otm->find($orden_trabajo_id);
$cm = model(ClienteModel::class); $cm = model(ClienteModel::class);
$cliente = $ot->pedido()->cliente(); $cliente = $ot->pedido()->cliente();
$clienteContactos = $cm->querySelectClienteContacto($cliente->id,$this->request->getGet('q')); $clienteContactos = $cm->querySelectClienteContacto($cliente->id, $this->request->getGet('q'));
return $this->response->setJSON($clienteContactos); return $this->response->setJSON($clienteContactos);
} }
public function store_hebra(string $model) public function store_hebra(string $model)
{ {
$auth_user = auth()->user(); $auth_user = auth()->user();
$bodyData = $this->request->getPost(); $bodyData = $this->request->getPost();
$status = $this->chatService->storeHebra($model,$bodyData['modelId'],$bodyData); $status = $this->chatService->storeHebra($model, $bodyData['modelId'], $bodyData);
return $this->response->setJSON(["message" => "Hebra creada correctamente", "status" => $status]); return $this->response->setJSON(["message" => "Hebra creada correctamente", "status" => $status]);
} }
public function update_hebra($chat_id) public function update_hebra($chat_id)
{ {
$bodyData = $this->request->getPost(); $bodyData = $this->request->getPost();
$chatMessageId = $this->chatMessageModel->insert([ $chatMessageId = $this->chatMessageModel->insert([
"chat_id" => $chat_id, "chat_id" => $chat_id,
"message" => $bodyData["message"], "message" => $bodyData["message"],
"sender_id" => auth()->user()->id "sender_id" => auth()->user()->id
@ -441,9 +447,9 @@ class ChatController extends BaseController
} }
return $this->response->setJSON(["message" => "Hebra actualizada correctamente", "status" => true]); return $this->response->setJSON(["message" => "Hebra actualizada correctamente", "status" => true]);
} }
public function get_hebra(string $model,int $modelId) public function get_hebra(string $model, int $modelId)
{ {
$data = $this->chatService->getHebras($model,$modelId); $data = $this->chatService->getHebras($model, $modelId);
return $this->response->setJSON($data); return $this->response->setJSON($data);
} }
@ -456,8 +462,8 @@ class ChatController extends BaseController
return DataTable::of($query) return DataTable::of($query)
->edit('created_at', fn($q) => Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i")) ->edit('created_at', fn($q) => Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i"))
->edit('updated_at', fn($q) => Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i")) ->edit('updated_at', fn($q) => Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i"))
->edit("creator",fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">'.lang("App.me").'</span>' : $q->creator) ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">' . lang("App.me") . '</span>' : $q->creator)
->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->id, $auth_user_id)) ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->id, $auth_user_id))
->add("action", fn($q) => [ ->add("action", fn($q) => [
"type" => "direct", "type" => "direct",
"modelId" => $q->id, "modelId" => $q->id,
@ -478,12 +484,18 @@ class ChatController extends BaseController
return DataTable::of($query) return DataTable::of($query)
->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "") ->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "")
->edit('updated_at', fn($q) => $q->updated_at ? Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i") : "") ->edit('updated_at', fn($q) => $q->updated_at ? Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i") : "")
->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId))
->edit("creator",fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">'.lang("App.me").'</span>' : $q->creator) ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">' . lang("App.me") . '</span>' : $q->creator)
->add("action", fn($q) => ["type" => "presupuesto", "modelId" => $q->id, "isAdmin" => $isAdmin,"chatMessageId" => $q->chatMessageId, "lang" => [ ->add("action", fn($q) => [
"view_chat" => lang('Chat.view_chat'), "type" => "presupuesto",
"view_by_alt_message" => lang('Chat.view_by_alt_message') "modelId" => $q->id,
]]) "isAdmin" => $isAdmin,
"chatMessageId" => $q->chatMessageId,
"lang" => [
"view_chat" => lang('Chat.view_chat'),
"view_by_alt_message" => lang('Chat.view_by_alt_message')
]
])
->toJson(true); ->toJson(true);
} }
public function datatable_pedido_messages() public function datatable_pedido_messages()
@ -494,12 +506,18 @@ class ChatController extends BaseController
return DataTable::of($query) return DataTable::of($query)
->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "") ->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "")
->edit('updated_at', fn($q) => $q->updated_at ? Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i") : "") ->edit('updated_at', fn($q) => $q->updated_at ? Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i") : "")
->edit("creator",fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">'.lang("App.me").'</span>' : $q->creator) ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">' . lang("App.me") . '</span>' : $q->creator)
->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId))
->add("action", fn($q) => ["type" => "pedido", "modelId" => $q->id, "isAdmin" => $isAdmin,"chatMessageId" => $q->chatMessageId, "lang" => [ ->add("action", fn($q) => [
"view_chat" => lang('Chat.view_chat'), "type" => "pedido",
"view_by_alt_message" => lang('Chat.view_by_alt_message') "modelId" => $q->id,
]]) "isAdmin" => $isAdmin,
"chatMessageId" => $q->chatMessageId,
"lang" => [
"view_chat" => lang('Chat.view_chat'),
"view_by_alt_message" => lang('Chat.view_by_alt_message')
]
])
->toJson(true); ->toJson(true);
} }
@ -511,12 +529,18 @@ class ChatController extends BaseController
return DataTable::of($query) return DataTable::of($query)
->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "") ->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "")
->edit('updated_at', fn($q) => $q->updated_at ? Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i") : "") ->edit('updated_at', fn($q) => $q->updated_at ? Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i") : "")
->edit("creator",fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">'.lang("App.me").'</span>' : $q->creator) ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">' . lang("App.me") . '</span>' : $q->creator)
->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId))
->add("action", fn($q) => ["type" => "factura", "modelId" => $q->id, "isAdmin" => $isAdmin,"chatMessageId" => $q->chatMessageId, "lang" => [ ->add("action", fn($q) => [
"view_chat" => lang('Chat.view_chat'), "type" => "factura",
"view_by_alt_message" => lang('Chat.view_by_alt_message') "modelId" => $q->id,
]]) "isAdmin" => $isAdmin,
"chatMessageId" => $q->chatMessageId,
"lang" => [
"view_chat" => lang('Chat.view_chat'),
"view_by_alt_message" => lang('Chat.view_by_alt_message')
]
])
->toJson(true); ->toJson(true);
} }
@ -528,29 +552,41 @@ class ChatController extends BaseController
return DataTable::of($query) return DataTable::of($query)
->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "") ->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "")
->edit('updated_at', fn($q) => $q->updated_at ? Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i") : "") ->edit('updated_at', fn($q) => $q->updated_at ? Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i") : "")
->edit("creator",fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">'.lang("App.me").'</span>' : $q->creator) ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">' . lang("App.me") . '</span>' : $q->creator)
->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId))
->add("action", fn($q) => ["type" => "ot", "modelId" => $q->id, "isAdmin" => $isAdmin,"chatMessageId" => $q->chatMessageId, "lang" => [ ->add("action", fn($q) => [
"view_chat" => lang('Chat.view_chat'), "type" => "ot",
"view_by_alt_message" => lang('Chat.view_by_alt_message') "modelId" => $q->id,
]]) "isAdmin" => $isAdmin,
"chatMessageId" => $q->chatMessageId,
"lang" => [
"view_chat" => lang('Chat.view_chat'),
"view_by_alt_message" => lang('Chat.view_by_alt_message')
]
])
->toJson(true); ->toJson(true);
} }
public function datatable_direct_messages() public function datatable_direct_messages()
{ {
$auth_user_id = auth()->user()->id; $auth_user_id = auth()->user()->id;
$isAdmin = auth()->user()->inGroup('admin'); $isAdmin = auth()->user()->inGroup('admin');
$query = $this->chatModel->getQueryDatatableDirectMessages($auth_user_id); $query = $this->chatModel->getQueryDatatableDirectMessages($auth_user_id);
return DataTable::of($query) return DataTable::of($query)
->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "") ->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "")
->edit('updated_at', fn($q) => $q->updated_at ? Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i") : "") ->edit('updated_at', fn($q) => $q->updated_at ? Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i") : "")
->edit("creator",fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">'.lang("App.me").'</span>' : $q->creator) ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">' . lang("App.me") . '</span>' : $q->creator)
->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId))
->add("action", fn($q) => ["type" => "direct", "modelId" => $q->id, "isAdmin" => $isAdmin,"chatMessageId" => $q->chatMessageId, "lang" => [ ->add("action", fn($q) => [
"view_chat" => lang('Chat.view_chat'), "type" => "direct",
"view_by_alt_message" => lang('Chat.view_by_alt_message') "modelId" => $q->id,
]]) "isAdmin" => $isAdmin,
"chatMessageId" => $q->chatMessageId,
"lang" => [
"view_chat" => lang('Chat.view_chat'),
"view_by_alt_message" => lang('Chat.view_by_alt_message')
]
])
->toJson(true); ->toJson(true);
} }
@ -651,14 +687,15 @@ class ChatController extends BaseController
{ {
$bodyData = $this->request->getPost(); $bodyData = $this->request->getPost();
$auth_user = auth()->user(); $auth_user = auth()->user();
$bodyData["sender_id"] = $auth_user->id; $bodyData["sender_id"] = $auth_user->id;
$chat_message_id = $this->chatMessageModel->insert($bodyData); $chat_message_id = $this->chatMessageModel->insert($bodyData);
$users_id = $this->chatUserModel->getChatUserArrayId($chat_id); $users_id = $this->chatUserModel->getChatUserArrayId($chat_id);
foreach ($users_id as $user_id) { foreach ($users_id as $user_id) {
if ($user_id != $auth_user->id) { if ($user_id != $auth_user->id) {
$this->chatNotificationModel->insert(["chat_message_id" => $chat_message_id, "user_id" => $user_id]); $this->chatNotificationModel->insert(["chat_message_id" => $chat_message_id, "user_id" => $user_id]);
} }
}; }
;
$message = $this->chatMessageModel->get_chat_message($chat_message_id); $message = $this->chatMessageModel->get_chat_message($chat_message_id);
return $this->response->setJSON($message); return $this->response->setJSON($message);
} }
@ -747,7 +784,7 @@ class ChatController extends BaseController
} }
public function chat_department_edit($chat_department_id) public function chat_department_edit($chat_department_id)
{ {
$chatDepartment = $this->chatDeparmentModel->find($chat_department_id); $chatDepartment = $this->chatDeparmentModel->find($chat_department_id);
$this->viewData['breadcrumb'] = [ $this->viewData['breadcrumb'] = [
['title' => lang("App.menu_configuration"), 'route' => 'javascript:void(0);', 'active' => false], ['title' => lang("App.menu_configuration"), 'route' => 'javascript:void(0);', 'active' => false],
['title' => lang("App.menu_config_messages"), 'route' => route_to("configMessagesIndex"), 'active' => false], ['title' => lang("App.menu_config_messages"), 'route' => route_to("configMessagesIndex"), 'active' => false],