@extends(getenv("THEME") . ".layouts.argo") @section("content") @php use Illuminate\Support\Facades\DB; use Carbon\Carbon; $todasFilas = []; $totalQueues = $totalQueues ?? 0; $totalAgentUnique = $totalAgentUnique ?? 0; $waitingCalls = $waitingCalls ?? 0; $queuesByName = []; if (isset($queues) && is_iterable($queues)) { foreach ($queues as $queueItem) { if (!empty($queueItem->name)) { $queuesByName[(string) $queueItem->name] = $queueItem->descricao ?? $queueItem->name; } } } if (isset($allQueues) && is_array($allQueues)) { $totalQueues = count($allQueues); $uniqueAgents = []; $waitingCalls = 0; foreach ($allQueues as $queueData) { $queueTitle = data_get($queueData, "queue"); $queueKey = (string) data_get($queueData, "queue", ""); if (isset($queuesByName[$queueKey])) { $queueTitle = $queuesByName[$queueKey]; } $agents = []; $entries = []; $members = data_get($queueData, "members", []); if (is_iterable($members)) { foreach ($members as $membro) { //dd($membro); $statusRaw = data_get($membro, "status", ""); $statusKey = "indisponivel"; if ($statusRaw === "Livre") { $statusKey = "livre"; } elseif ($statusRaw === "Ocupado") { $statusKey = "ocupado"; } elseif ($statusRaw === "Chamando") { $statusKey = "chamando"; } elseif (in_array($statusRaw, ["Em uso", "Em espera (hold)"], true)) { $statusKey = "em_uso"; } elseif (in_array($statusRaw, ["Chamando/Em uso"], true)) { $statusKey = "chamando_em_uso"; } elseif (in_array($statusRaw, ["Indisponível", "Inválido"], true)) { $statusKey = "indisponivel"; } $memberInterface = data_get($membro, "interface", "-"); $agents[] = [ "nome" => data_get($membro, "name", "-"), "interface" => $memberInterface, "status" => $statusKey, "numero" => "-", "duracao" => "-", "calls" => data_get($membro, "callsTaken", 0) ]; if (!empty($memberInterface)) { $uniqueAgents[$memberInterface] = true; } } } $queueEntries = data_get($queueData, "entries", []); if (is_iterable($queueEntries)) { foreach ($queueEntries as $entrie) { $entries[] = [ "posicao" => data_get($entrie, "position", "-"), "callerid" => data_get($entrie, "calleridnum", "-"), "nome" => data_get($entrie, "calleridname", "-"), "tempo" => data_get($entrie, "wait", "-"), "canal" => data_get($entrie, "channel", "-"), "uniqueid" => data_get($entrie, "uniqueid", "-") ]; } $waitingCalls += count($queueEntries); } $todasFilas[] = [ "key" => $queueKey, "titulo" => $queueTitle, "agentes" => $agents, "espera" => $entries ]; } $totalAgentUnique = count(array_keys($uniqueAgents)); } @endphp

Painel de Filas

Monitoramento em tempo real
@csrf
Selecione as filas
@forelse ($queues as $queue) @php $checked = false; @endphp @if(isset($queuesQuery)) @foreach($queuesQuery as $queueQuery) @if($queue->id == $queueQuery->id) @php $checked = true; @endphp @endif @endforeach @endif @empty

Nao ha filas cadastradas

@endforelse
Total Filas
{{isset($totalQueues) ? $totalQueues : 0}}
{{-- --}}
Agentes
{{isset($totalAgentUnique) ? $totalAgentUnique : 0}}
{{-- --}}
Chamadas em espera
{{isset($waitingCalls) ? $waitingCalls : 0}}
{{-- --}}
{{-- @php $showMember = false; foreach($allQueues as $queuesMembers) { if(!empty($queuesMembers["members"])) { $showMember = true; } } @endphp --}} @foreach($todasFilas as $fila)
{{ $fila['titulo'] }}
@forelse($fila['agentes'] as $agente) {{-- Lógica de classe CSS baseada no status usando diretiva @class (Laravel 8+) ou lógica manual --}} @empty @endforelse
Nome Interface Status Numero Duração CallsTaken
{{ $agente['nome'] }} {{ $agente['interface'] }} @switch($agente['status']) @case('livre') Livre @break @case('ocupado') Ocupado @break @case('chamando') Chamando @break @case('em_uso') Em uso @break @case('chamando_em_uso') Chamando/Em uso @break @case('indisponivel') Indisponível @break @default {{ $agente['status'] }} @endswitch {{ $agente['numero'] }} {{ $agente['duracao'] }} {{ $agente['calls'] }}
Nenhum agente logado.
Entradas em espera...
@forelse($fila['espera'] as $chamada) @empty @endforelse
Posição Calleridnum Calleridname Espera Canal Uniqueid
{{ $chamada['posicao'] }} {{ $chamada['callerid'] }} {{ $chamada['nome'] }} {{ $chamada['tempo'] }} {{ $chamada['canal'] }} {{ $chamada['uniqueid'] }}
Nenhuma chamada em espera no momento
@endforeach
@endsection