From 55157d23aaecb412efe2d75cf89dc871c0fa894a Mon Sep 17 00:00:00 2001 From: amazuecos Date: Sun, 16 Mar 2025 23:13:03 +0100 Subject: [PATCH] message client department --- ci4/app/Config/Routes.php | 3 + ci4/app/Controllers/Chat/ChatController.php | 92 ++++++++++++++---- ci4/app/Language/en/Chat.php | 45 +++++++++ ci4/app/Language/es/Chat.php | 11 ++- .../themes/vuexy/components/chat_factura.php | 43 +++++---- .../themes/vuexy/components/chat_pedido.php | 44 +++++---- .../vuexy/components/chat_presupuesto.php | 42 +++++---- .../safekat/components/alerts/sweetAlert.js | 26 ++--- httpdocs/assets/js/safekat/components/chat.js | 94 ++++++++++++++++++- 9 files changed, 318 insertions(+), 82 deletions(-) create mode 100644 ci4/app/Language/en/Chat.php diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index b4f6144b..bbd2c1e0 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -898,6 +898,9 @@ $routes->group('chat', ['namespace' => 'App\Controllers\Chat'], function ($route $routes->get('department/pedido/(:num)/(:num)', 'ChatController::get_chat_pedido/$1/$2', ['as' => 'getChatPedido']); $routes->get('department/factura/(:num)/(:num)', 'ChatController::get_chat_factura/$1/$2', ['as' => 'getChatFactura']); $routes->get('department/(:num)/users', 'ChatController::get_chat_department_users/$1', ['as' => 'getChatDepartmentUsers']); + $routes->post('department/user', 'ChatController::subscribe_to_chat_deparment/$1', ['as' => 'subscribeToChatDepartment']); + $routes->delete('department/user/(:num)', 'ChatController::delete_user_from_department/$1', ['as' => 'deleteUserFromDepartment']); + $routes->get('(:num)', 'ChatController::get_chat/$1', ['as' => 'getChat']); $routes->post('message/error/presupuesto', 'ChatController::store_chat_error_message', ['as' => 'storeChatErrorMessage']); diff --git a/ci4/app/Controllers/Chat/ChatController.php b/ci4/app/Controllers/Chat/ChatController.php index 872235f4..4a2e97c2 100644 --- a/ci4/app/Controllers/Chat/ChatController.php +++ b/ci4/app/Controllers/Chat/ChatController.php @@ -207,6 +207,17 @@ class ChatController extends BaseController $chat_message_id = $this->chatMessageModel->insert(["chat_id" => $chatId, "sender_id" => auth()->user()->id, "message" => $data["message"]]); $dataResponse = $this->chatMessageModel->find($chat_message_id); $chatDepartmentUsers = $this->chatDeparmentModel->getChatDepartmentUsers($data["chat_department_id"]); + $this->chatNotificationModel->insert(["chat_message_id" => $chat_message_id, "user_id" => $data['client']]); + $cliente_in_department_count = $this->chatDeparmentUserModel->where('chat_department_id',$data["chat_department_id"])->where('user_id',$data['client'])->countAllResults(); + $auth_user_in_department_count = $this->chatDeparmentUserModel->where('chat_department_id',$data["chat_department_id"])->where('user_id',auth()->user()->id)->countAllResults(); + if($cliente_in_department_count == 0){ + $this->chatDeparmentUserModel->insert(['chat_department_id' => $data["chat_department_id"],'user_id' => $data['client']]); + } + if($auth_user_in_department_count){ + $this->chatDeparmentUserModel->insert(['chat_department_id' => $data["chat_department_id"],'user_id' => auth()->user()->id]); + + } + foreach ($chatDepartmentUsers as $user) { if ($user->id != auth()->user()->id) { $this->chatNotificationModel->insert(["chat_message_id" => $chat_message_id, "user_id" => $user->id]); @@ -228,6 +239,16 @@ class ChatController extends BaseController $chat_message_id = $this->chatMessageModel->insert(["chat_id" => $chatId, "sender_id" => auth()->user()->id, "message" => $data["message"]]); $dataResponse = $this->chatMessageModel->find($chat_message_id); $chatDepartmentUsers = $this->chatDeparmentModel->getChatDepartmentUsers($data["chat_department_id"]); + $this->chatNotificationModel->insert(["chat_message_id" => $chat_message_id, "user_id" => $data['client']]); + $cliente_in_department_count = $this->chatDeparmentUserModel->where('chat_department_id',$data["chat_department_id"])->where('user_id',$data['client'])->countAllResults(); + $auth_user_in_department_count = $this->chatDeparmentUserModel->where('chat_department_id',$data["chat_department_id"])->where('user_id',auth()->user()->id)->countAllResults(); + if($cliente_in_department_count == 0){ + $this->chatDeparmentUserModel->insert(['chat_department_id' => $data["chat_department_id"],'user_id' => $data['client']]); + } + if($auth_user_in_department_count){ + $this->chatDeparmentUserModel->insert(['chat_department_id' => $data["chat_department_id"],'user_id' => auth()->user()->id]); + + } foreach ($chatDepartmentUsers as $user) { if ($user->id != auth()->user()->id) { $this->chatNotificationModel->insert(["chat_message_id" => $chat_message_id, "user_id" => $user->id]); @@ -249,6 +270,16 @@ class ChatController extends BaseController $chat_message_id = $this->chatMessageModel->insert(["chat_id" => $chatId, "sender_id" => auth()->user()->id, "message" => $data["message"]]); $dataResponse = $this->chatMessageModel->find($chat_message_id); $chatDepartmentUsers = $this->chatDeparmentModel->getChatDepartmentUsers($data["chat_department_id"]); + $this->chatNotificationModel->insert(["chat_message_id" => $chat_message_id, "user_id" => $data['client']]); + $cliente_in_department_count = $this->chatDeparmentUserModel->where('chat_department_id',$data["chat_department_id"])->where('user_id',$data['client'])->countAllResults(); + $auth_user_in_department_count = $this->chatDeparmentUserModel->where('chat_department_id',$data["chat_department_id"])->where('user_id',auth()->user()->id)->countAllResults(); + if($cliente_in_department_count == 0){ + $this->chatDeparmentUserModel->insert(['chat_department_id' => $data["chat_department_id"],'user_id' => $data['client']]); + } + if($auth_user_in_department_count){ + $this->chatDeparmentUserModel->insert(['chat_department_id' => $data["chat_department_id"],'user_id' => auth()->user()->id]); + + } foreach ($chatDepartmentUsers as $user) { if ($user->id != auth()->user()->id) { $this->chatNotificationModel->insert(["chat_message_id" => $chat_message_id, "user_id" => $user->id]); @@ -319,26 +350,30 @@ class ChatController extends BaseController $response = []; if ($cliente_id) { $data = $this->clienteModel->getClienteDataPresupuestoPedidoFactura($cliente_id); + $response["internals"] = $this->chatModel->getChatDepartmentNotifications(); $response["totalMessages"] = 0; - $response["chatFacturas"] = $this->chatModel->getClienteChatFacturas($data["facturas"]); $mensajes_directos = $this->chatModel->getChatDirectMessageNotifications(); - - foreach ($response["chatFacturas"] as $key => $value) { + // $response["chatFacturas"] = $this->chatModel->getClienteChatFacturas($data["facturas"]); + // foreach ($response["chatFacturas"] as $key => $value) { + // $response["totalMessages"] += $value->unreadMessages; + // } + // $response["chatPresupuestos"] = $this->chatModel->getClienteChatPresupuestos($data["presupuestos"]); + // foreach ($response["chatPresupuestos"] as $key => $value) { + // $response["totalMessages"] += $value->unreadMessages; + // } + // foreach ($mensajes_directos as $value) { + // $response["internals"][] = $value; + // $response["totalMessages"] += $value->unreadMessages; + // } + // $response["chatPedidos"] = $this->chatModel->getClienteChatPedidos($data["pedidos"]); + // foreach ($response["chatPedidos"] as $key => $value) { + // $response["totalMessages"] += $value->unreadMessages; + // } + // $response["data"] = $data; + $response["totalMessages"] = 0; + foreach ($response["internals"] as $key => $value) { $response["totalMessages"] += $value->unreadMessages; } - $response["chatPresupuestos"] = $this->chatModel->getClienteChatPresupuestos($data["presupuestos"]); - foreach ($response["chatPresupuestos"] as $key => $value) { - $response["totalMessages"] += $value->unreadMessages; - } - foreach ($mensajes_directos as $value) { - $response["internals"][] = $value; - $response["totalMessages"] += $value->unreadMessages; - } - $response["chatPedidos"] = $this->chatModel->getClienteChatPedidos($data["pedidos"]); - foreach ($response["chatPedidos"] as $key => $value) { - $response["totalMessages"] += $value->unreadMessages; - } - $response["data"] = $data; } else { $response["internals"] = $this->chatModel->getChatDepartmentNotifications(); $internal_notifications = $this->chatModel->getChatInternalNotifications(); @@ -800,4 +835,29 @@ class ChatController extends BaseController $r = $messageService->createErrorMessagePresupuesto("Error", $bodyData['presupuesto_id']); return $this->response->setJSON(["message" => "ok", "data" => $r]); } + public function delete_user_from_department($chat_department_id) + { + $user_id = auth()->user()->id; + $chatDepartmentUserEntity = $this->chatDeparmentUserModel->where('chat_department_id',$chat_department_id)->where('user_id',$user_id); + if($chatDepartmentUserEntity->countAllResults() > 0) + { + $deleted = $this->chatDeparmentUserModel->where('chat_department_id',$chat_department_id)->where('user_id',$user_id)->delete(); + return $this->response->setJSON(["message" => lang('Chat.exit_chat_ok'), "status" => true]); + }else{ + return $this->response->setJSON(["message" => lang('Chat.exit_chat_wrong'),"status" => false]); + } + } + public function subscribe_to_chat_deparment() + { + $data = $this->request->getPost(); + $user_id = auth()->user()->id; + $chatDepartmentUserEntity = $this->chatDeparmentUserModel->where('chat_department_id',$data['chat_department_id'])->where('user_id',$user_id); + if($chatDepartmentUserEntity->countAllResults() > 0) + { + return $this->response->setJSON(["message" => lang('Chat.subscribe_chat_wrong'),"status" => false]); + }else{ + $this->chatDeparmentUserModel->insert(["chat_department_id" => $data["chat_department_id"],"user_id" => $user_id]); + return $this->response->setJSON(["message" => lang('Chat.subscribe_chat_ok'), "status" => true]); + } + } } diff --git a/ci4/app/Language/en/Chat.php b/ci4/app/Language/en/Chat.php new file mode 100644 index 00000000..bb9c813c --- /dev/null +++ b/ci4/app/Language/en/Chat.php @@ -0,0 +1,45 @@ + "Messages", + "messages" => "Messages", + "message" => "Message", + "messages_internal" => "Internal messages", + "message_internal" => "Internal message", + "messages_client" => "Client messages", + "message_client" => "Client message", + "modal" => [ + "new_hebra" => "New thread", + "title" => "Title", + "new_message" => "New message", + "new_receivers" => "New participants", + "btn_send" => "Send", + "btn_send_update" => "Send" + ], + "datatable_messages" => [ + "created_at" => "Created at", + "updated_at" => "Updated at", + "title" => "Title", + "creator" => "Created by", + "viewed" => "Viewed", + + ], + "new_message_ok" => "Message sent successfully", + "participants" => "Participants", + "choose_department" => "Choose a deparment", + "new_participant" => "Add new participants", + "write_message_placeholder" => "Type your message here ...", + "add_notification" => "Notification", + "check_as_unviewed" => "Check as not viewed", + "add_notification_message" => "Add users present in this chat a notification", + "chat_title_presupuesto" => 'Presupuesto[{title,string,0}][{id}]', + "no_messages_notification" => 'There is no messages', + "view_chat" => 'See chat', + "view_by_alt_message" => 'Show users that has or not viewed the messages', + "exit_chat" => 'Exit chat', + "subscribe_chat" => 'Subscribe to chat', + "exit_chat_ok" => "You have exit chat successfully. Notifications on this chat will no longer be received", + "exit_chat_wrong" => "You can't exit the chat because you don't belong to it.", + "subscribe_chat_ok" => "You've subscribed to chat successfully. Now on you'll receive notifications.", + "subscribe_chat_wrong" => "You already belong to this chat.", +]; \ No newline at end of file diff --git a/ci4/app/Language/es/Chat.php b/ci4/app/Language/es/Chat.php index e9f32692..3488f38b 100644 --- a/ci4/app/Language/es/Chat.php +++ b/ci4/app/Language/es/Chat.php @@ -35,5 +35,14 @@ return [ "chat_title_presupuesto" => 'Presupuesto[{title,string,0}][{id}]', "no_messages_notification" => 'No hay mensajes que revisar por el momento', "view_chat" => 'Ver chat', - "view_by_alt_message" => 'Muestra los usuarios que han leído o no los mensajes' + "view_by_alt_message" => 'Muestra los usuarios que han leído o no los mensajes', + "exit_chat" => 'Salir conversación', + "subscribe_chat" => 'Subscribirse al chat', + "exit_chat_ok" => "Ha salido de la conversación correctamente. No recibirá más notificaciones a no ser que sea añadido de nuevo.", + "exit_chat_wrong" => "No puede salir de la conversación porque no pertenece a ella.", + "subscribe_chat_ok" => "Te has subscrito al chat correctamente. Ahora recibirás notificaciones cuando lleguen mensajes.", + "subscribe_chat_wrong" => "Ya perteneces a este chat.", + + + ]; \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/components/chat_factura.php b/ci4/app/Views/themes/vuexy/components/chat_factura.php index be1ebf0b..0a50c300 100644 --- a/ci4/app/Views/themes/vuexy/components/chat_factura.php +++ b/ci4/app/Views/themes/vuexy/components/chat_factura.php @@ -1,9 +1,5 @@
-user()->inGroup('admin')) { ?> -
- -
- +
@@ -30,12 +26,17 @@