From cb9e4ea23ac7b7e027bd653b7d59c5081face3f6 Mon Sep 17 00:00:00 2001 From: Felipe Fontana Date: Tue, 11 Jun 2024 15:21:59 -0400 Subject: [PATCH] =?UTF-8?q?Att:=20atualiza=C3=A7=C3=A3o=20system=20message?= =?UTF-8?q?s,=20separando=20as=20mensagens=20de=20sistema=20por=20fila?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/SystemMessageController.php | 33 ++++-- app/Models/SystemMessage.php | 23 ++++ .../systemMessages/cadastroSystemMessage.js | 38 +++++++ .../admin/cadastros/systemMessage.blade.php | 101 ++++++++++++++++-- .../edit/modalEditSystemMessage.blade.php | 65 ++++++++++- .../modal/insert/modalSystemMessage.blade.php | 14 +++ 6 files changed, 260 insertions(+), 14 deletions(-) diff --git a/app/Http/Controllers/Admin/SystemMessageController.php b/app/Http/Controllers/Admin/SystemMessageController.php index 8b08d34..fc180cd 100644 --- a/app/Http/Controllers/Admin/SystemMessageController.php +++ b/app/Http/Controllers/Admin/SystemMessageController.php @@ -5,13 +5,22 @@ namespace App\Http\Controllers\Admin; use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Models\SystemMessage; +use App\Models\Filas; +use App\Models\NumberChannel; use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Validator; class SystemMessageController extends Controller { - public function index() + public function __construct( + protected Filas $queueRepository, + protected NumberChannel $numberChannelRepository, + protected SystemMessage $systemMessageRepository, + ) { + } + + public function index(Request $request) { $user = auth()->user(); if(Gate::forUser($user)->denies('show_system_message')){ @@ -19,9 +28,17 @@ class SystemMessageController extends Controller } $id_empresa = Helper::getIdEmpresa(); - $systemMessages = SystemMessage::where('id_empresa', $id_empresa)->orderBy('id', 'asc')->get(); + $channels = $this->numberChannelRepository->list(['id_empresa' => $id_empresa]); + $queues = $this->queueRepository->list(['id_empresa' => $id_empresa]); + + $selected = (object) $request->all(); + + $id_number = $request->channel; + $id_queue = $request->queue; + + $systemMessages = $this->systemMessageRepository->list(['id_empresa' => $id_empresa, 'id_number' => $id_number, 'id_queue' => $id_queue]); - return view('admin.cadastros.systemMessage', compact('systemMessages')); + return view('admin.cadastros.systemMessage', compact('systemMessages', 'channels', 'queues', 'selected')); } public function create(Request $request) @@ -45,7 +62,8 @@ class SystemMessageController extends Controller }, ], 'momento' => 'required', - 'ordem' => 'required' + 'ordem' => 'required', + 'queue' => 'required' ], [ 'required' => 'É preciso informar o campo :attribute.' ]); @@ -59,6 +77,7 @@ class SystemMessageController extends Controller 'momento' => $request->momento, 'ordem' => $request->ordem, 'id_empresa' => $id_empresa, + 'id_queue' => $request->queue ]); return redirect('systemMessage'); @@ -104,7 +123,8 @@ class SystemMessageController extends Controller }, ], 'momento' => 'required', - 'ordem' => 'required' + 'ordem' => 'required', + 'queue' => 'required' ], [ 'required' => 'É preciso informar o campo :attribute.' ]); @@ -117,7 +137,8 @@ class SystemMessageController extends Controller ->update([ 'texto' => $request->texto, 'ordem' => $request->ordem, - 'momento' => $request->momento + 'momento' => $request->momento, + 'id_queue' => $request->queue ]); return redirect('systemMessage')->with('status', 'atualizado com sucesso'); diff --git a/app/Models/SystemMessage.php b/app/Models/SystemMessage.php index e3e5d01..8909b6d 100644 --- a/app/Models/SystemMessage.php +++ b/app/Models/SystemMessage.php @@ -4,6 +4,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Facades\DB; class SystemMessage extends Model { @@ -19,4 +20,26 @@ class SystemMessage extends Model 'momento', 'id_queue', ]; + + public function list(array $params) + { + $messages = DB::table('system_message as m') + ->join('queues as q', 'q.id', '=', 'm.id_queue') + ->join('number_channel as nc', 'nc.id', '=', 'q.id_number') + ->select('m.*', 'q.nome as name_queue', 'nc.title as name_channel'); + + if(isset($params['id_empresa'])){ + $messages->where('m.id_empresa', $params['id_empresa']); + } + + if(isset($params['id_queue'])){ + $messages->where('m.id_queue', $params['id_queue']); + } + + if(isset($params['id_number'])){ + $messages->where('q.id_number', $params['id_number']); + } + + return $messages->get(); + } } diff --git a/public/js/views/systemMessages/cadastroSystemMessage.js b/public/js/views/systemMessages/cadastroSystemMessage.js index d9c983e..a709a11 100644 --- a/public/js/views/systemMessages/cadastroSystemMessage.js +++ b/public/js/views/systemMessages/cadastroSystemMessage.js @@ -19,6 +19,44 @@ const listItemFormatValue = 3; const valueEspacamento = 50; const inputs = document.querySelectorAll('.autoCompleteInput'); +document.addEventListener('DOMContentLoaded', function() { + const channelSelect = document.getElementById('channelSelect'); + const queueDiv = document.getElementById('queueDiv'); + const queueSelect = document.getElementById('queueSelect'); + + function updateQueues(selectedChannelId) { + const filteredQueues = queues.filter(queue => queue.id_number === selectedChannelId); + + // Limpa as opções anteriores + queueSelect.innerHTML = ''; + + // Adiciona as novas opções + filteredQueues.forEach(queue => { + const option = document.createElement('option'); + option.value = queue.id; + option.textContent = queue.nome; + queueSelect.appendChild(option); + }); + + // Mostra a div de fila se houver filas correspondentes + if (filteredQueues.length > 0) { + queueDiv.style.display = 'block'; + } else { + queueDiv.style.display = 'none'; + } + } + + const firstChannelId = parseInt(channelSelect.options[0].value); + channelSelect.value = firstChannelId; + updateQueues(firstChannelId); + + // Adiciona o evento de mudança no select de canal + channelSelect.addEventListener('change', function() { + const selectedChannelId = parseInt(channelSelect.value); + updateQueues(selectedChannelId); + }); +}); + inputs.forEach(input => { input.addEventListener('input', (e) => { let cont = 0; diff --git a/resources/views/admin/cadastros/systemMessage.blade.php b/resources/views/admin/cadastros/systemMessage.blade.php index 6a7d8dc..043e12e 100644 --- a/resources/views/admin/cadastros/systemMessage.blade.php +++ b/resources/views/admin/cadastros/systemMessage.blade.php @@ -11,25 +11,47 @@ {{session('error')}} @endif -
-
+
+

Mensagens de Sistema

@can('store_system_message') - + @endcan
+
+
+ + +
+
+ + +
+
+ +
+
- + + + @@ -41,6 +63,8 @@ + +
IDID Texto Ordem MomentoFilaCanal Ações
{{$systemMessage->ordem}} {{$systemMessage->momento}}{{$systemMessage->name_queue}}{{$systemMessage->name_channel}} @can('edit_system_message') @@ -63,9 +87,72 @@ - - + + + + + @foreach($queues as $queue) + + @endforeach - + + + \ No newline at end of file diff --git a/resources/views/components/modal/edit/modalEditSystemMessage.blade.php b/resources/views/components/modal/edit/modalEditSystemMessage.blade.php index f96dcaa..69d0f0a 100644 --- a/resources/views/components/modal/edit/modalEditSystemMessage.blade.php +++ b/resources/views/components/modal/edit/modalEditSystemMessage.blade.php @@ -41,6 +41,20 @@ + +
+ + +
+ + @@ -86,9 +100,58 @@ } else { containerSelect.innerHTML += `` } - }) + }); + + const editChannelSelect = document.getElementById('editChannelSelect'); + const editQueueSelect = document.getElementById('editQueueSelect'); + const editQueueDiv = document.getElementById('editQueueDiv'); + + const selectedQueue = queues.find(queue => queue.id === systemMessageData.id_queue); + + if (selectedQueue) { + editChannelSelect.value = selectedQueue.id_number; + + editUpdateQueues(selectedQueue.id_number, systemMessageData.id_queue); + } } }); + } + + function editUpdateQueues(channelId, selectedQueueId = null) { + const editQueueSelect = document.getElementById('editQueueSelect'); + const editQueueDiv = document.getElementById('editQueueDiv'); + + // Filter queues based on channelId + const filteredQueues = queues.filter(queue => queue.id_number === channelId); + + // Clear previous options + editQueueSelect.innerHTML = ''; + + // Add new options + filteredQueues.forEach(queue => { + const option = document.createElement('option'); + option.value = queue.id; + option.textContent = queue.nome; + if (queue.id === selectedQueueId) { + option.selected = true; + } + editQueueSelect.appendChild(option); + }); + // Show the queue div if there are queues available + if (filteredQueues.length > 0) { + editQueueDiv.style.display = 'block'; + } else { + editQueueDiv.style.display = 'none'; + } } + + document.addEventListener('DOMContentLoaded', function() { + const editChannelSelect = document.getElementById('editChannelSelect'); + + editChannelSelect.addEventListener('change', function() { + const selectedChannelId = parseInt(editChannelSelect.value); + editUpdateQueues(selectedChannelId); + }); + }); \ No newline at end of file diff --git a/resources/views/components/modal/insert/modalSystemMessage.blade.php b/resources/views/components/modal/insert/modalSystemMessage.blade.php index aec6c13..cb92934 100644 --- a/resources/views/components/modal/insert/modalSystemMessage.blade.php +++ b/resources/views/components/modal/insert/modalSystemMessage.blade.php @@ -46,6 +46,20 @@ + +
+ + +
+ +