From 6c94858d8ccf178a9df8e296896b1b12912ecc10 Mon Sep 17 00:00:00 2001 From: imnavajas Date: Wed, 9 Jul 2025 11:48:27 +0200 Subject: [PATCH] Arreglado problema al listar usuarios con select --- ci4/app/Controllers/Chat/ChatController.php | 159 ++++++++++++-------- 1 file changed, 98 insertions(+), 61 deletions(-) diff --git a/ci4/app/Controllers/Chat/ChatController.php b/ci4/app/Controllers/Chat/ChatController.php index 2c70160d..496c3ac0 100755 --- a/ci4/app/Controllers/Chat/ChatController.php +++ b/ci4/app/Controllers/Chat/ChatController.php @@ -61,11 +61,13 @@ class ChatController extends BaseController $this->chatService = service("chat"); } - public function index() {} - public function get_chat_departments(string $model,int $modelId) + public function index() + { + } + 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); } @@ -250,7 +252,7 @@ class ChatController extends BaseController public function store_message($model) { $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); } @@ -341,22 +343,26 @@ class ChatController extends BaseController } public function get_chat_users_internal() { - $query = $this->userModel->builder()->select( - [ - "id", - "CONCAT(first_name,' ',last_name,'(',username,')') as name" - ] - )->where("cliente_id", null) - ->where("deleted_at", null) - ->whereNotIn("id", [auth()->user()->id]); - if ($this->request->getGet("q")) { - $query->groupStart() - ->orLike("users.username", $this->request->getGet("q")) - ->orLike("CONCAT(first_name,' ',last_name)", $this->request->getGet("q")) + $builder = $this->userModel->builder(); + + $builder->select([ + 'users.id', + "CONCAT(first_name, ' ', last_name, ' (', auth_identities.secret, ')') AS name" + ]) + ->join('auth_identities', 'auth_identities.user_id = users.id AND auth_identities.type = "email_password"') + ->where('cliente_id', null) + ->where('deleted_at', null) + ->whereNotIn('users.id', [auth()->user()->id]); + + 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(); } - return $this->response->setJSON($query->get()->getResultObject()); + return $this->response->setJSON($builder->get()->getResultObject()); } public function get_chat_users_all() { @@ -381,7 +387,7 @@ class ChatController extends BaseController $pm = model(PresupuestoModel::class); $p = $pm->find($presupuesto_id); $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); } public function get_pedido_client_users(int $pedido_id) @@ -389,7 +395,7 @@ class ChatController extends BaseController $pm = model(PedidoModel::class); $p = $pm->find($pedido_id); $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); } public function get_factura_client_users(int $factura_id) @@ -397,7 +403,7 @@ class ChatController extends BaseController $fm = model(FacturaModel::class); $f = $fm->find($factura_id); $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); } 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); $cm = model(ClienteModel::class); $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); } public function store_hebra(string $model) { $auth_user = auth()->user(); $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]); } public function update_hebra($chat_id) { $bodyData = $this->request->getPost(); - $chatMessageId = $this->chatMessageModel->insert([ + $chatMessageId = $this->chatMessageModel->insert([ "chat_id" => $chat_id, "message" => $bodyData["message"], "sender_id" => auth()->user()->id @@ -441,9 +447,9 @@ class ChatController extends BaseController } 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); } @@ -456,8 +462,8 @@ class ChatController extends BaseController 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('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 ? ''.lang("App.me").'' : $q->creator) - ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->id, $auth_user_id)) + ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '' . lang("App.me") . '' : $q->creator) + ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->id, $auth_user_id)) ->add("action", fn($q) => [ "type" => "direct", "modelId" => $q->id, @@ -478,12 +484,18 @@ class ChatController extends BaseController 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('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)) - ->edit("creator",fn($q) => $q->userId == $auth_user_id ? ''.lang("App.me").'' : $q->creator) - ->add("action", fn($q) => ["type" => "presupuesto", "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') - ]]) + ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) + ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '' . lang("App.me") . '' : $q->creator) + ->add("action", fn($q) => [ + "type" => "presupuesto", + "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); } public function datatable_pedido_messages() @@ -494,12 +506,18 @@ class ChatController extends BaseController 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('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 ? ''.lang("App.me").'' : $q->creator) - ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) - ->add("action", fn($q) => ["type" => "pedido", "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') - ]]) + ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '' . lang("App.me") . '' : $q->creator) + ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) + ->add("action", fn($q) => [ + "type" => "pedido", + "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); } @@ -511,12 +529,18 @@ class ChatController extends BaseController 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('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 ? ''.lang("App.me").'' : $q->creator) - ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) - ->add("action", fn($q) => ["type" => "factura", "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') - ]]) + ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '' . lang("App.me") . '' : $q->creator) + ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) + ->add("action", fn($q) => [ + "type" => "factura", + "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); } @@ -528,29 +552,41 @@ class ChatController extends BaseController 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('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 ? ''.lang("App.me").'' : $q->creator) - ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) - ->add("action", fn($q) => ["type" => "ot", "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') - ]]) + ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '' . lang("App.me") . '' : $q->creator) + ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) + ->add("action", fn($q) => [ + "type" => "ot", + "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); } public function datatable_direct_messages() { - $auth_user_id = auth()->user()->id; + $auth_user_id = auth()->user()->id; $isAdmin = auth()->user()->inGroup('admin'); $query = $this->chatModel->getQueryDatatableDirectMessages($auth_user_id); 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('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 ? ''.lang("App.me").'' : $q->creator) - ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) - ->add("action", fn($q) => ["type" => "direct", "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') - ]]) + ->edit("creator", fn($q) => $q->userId == $auth_user_id ? '' . lang("App.me") . '' : $q->creator) + ->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId)) + ->add("action", fn($q) => [ + "type" => "direct", + "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); } @@ -651,14 +687,15 @@ class ChatController extends BaseController { $bodyData = $this->request->getPost(); $auth_user = auth()->user(); - $bodyData["sender_id"] = $auth_user->id; + $bodyData["sender_id"] = $auth_user->id; $chat_message_id = $this->chatMessageModel->insert($bodyData); $users_id = $this->chatUserModel->getChatUserArrayId($chat_id); foreach ($users_id as $user_id) { if ($user_id != $auth_user->id) { $this->chatNotificationModel->insert(["chat_message_id" => $chat_message_id, "user_id" => $user_id]); } - }; + } + ; $message = $this->chatMessageModel->get_chat_message($chat_message_id); return $this->response->setJSON($message); } @@ -747,7 +784,7 @@ class ChatController extends BaseController } 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'] = [ ['title' => lang("App.menu_configuration"), 'route' => 'javascript:void(0);', 'active' => false], ['title' => lang("App.menu_config_messages"), 'route' => route_to("configMessagesIndex"), 'active' => false],