@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
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)
| Nome |
Interface |
Status |
Numero |
Duração |
CallsTaken |
@forelse($fila['agentes'] as $agente)
{{-- Lógica de classe CSS baseada no status usando diretiva @class (Laravel 8+) ou lógica manual --}}
| {{ $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'] }} |
@empty
| Nenhum agente logado. |
@endforelse
| Posição |
Calleridnum |
Calleridname |
Espera |
Canal |
Uniqueid |
@forelse($fila['espera'] as $chamada)
| {{ $chamada['posicao'] }} |
{{ $chamada['callerid'] }} |
{{ $chamada['nome'] }} |
{{ $chamada['tempo'] }} |
{{ $chamada['canal'] }} |
{{ $chamada['uniqueid'] }} |
@empty
| Nenhuma chamada em espera no momento |
@endforelse
@endforeach
@endsection