Browse Source

Habilitando registros de atendimentos atuais para o agente

Felipe
guilherme.guia 12 months ago
parent
commit
4e2868a945
  1. 52
      app/Http/Controllers/Admin/DashboardController.php
  2. 10
      public/js/views/agentesLogados/index.js

52
app/Http/Controllers/Admin/DashboardController.php

@ -8,7 +8,6 @@ use App\Models\Atendimentos;
use App\Models\Filas;
use App\Models\Pausas;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate;
class DashboardController extends Controller
{
@ -89,18 +88,6 @@ class DashboardController extends Controller
private function relatoriosDados()
{
$id_empresa = Helper::getIdEmpresa();
// $relatorio = DB::table('queues as q')
// ->leftJoin('supervisor as s', 's.fila', '=', 'q.nome')
// ->leftJoin('atendimento as a', 'a.id_usuario', '=', 's.id_usuario')
// ->select('q.id as fila_id', 'q.nome as fila', DB::raw('count( DISTINCT s.id) as quantidade_supervisores'), DB::raw('COALESCE(COUNT(a.id), 0) AS quantidade_atendimentos'))
// ->where([
// ['q.id_empresa', $id_empresa],
// ['q.is_ativa', true],
// ])
// ->groupBy('q.nome', 'q.id')
// ->orderBy('q.nome', 'asc')
// ->get();
$relatorio = DB::table('queues as q')
->leftJoin('supervisor as s', 's.fila', '=', 'q.nome')
->leftJoin('atendimento as a', 'a.id_usuario', '=', 's.id_usuario')
@ -146,7 +133,6 @@ class DashboardController extends Controller
return $atendimentosPorMes;
}
private function getAtendimentoDia($data_atual)
{
$id_empresa = Helper::getIdEmpresa();
@ -185,14 +171,12 @@ class DashboardController extends Controller
return $totalAgentesPausa;
}
public function agentesLogados($id)
{
if (empty($id)) {
return redirect()->back();
}
$id_empresa = Helper::getIdEmpresa();
$fila = Filas::where(['id' => $id, 'id_empresa' => $id_empresa])->first();
$pausas = Pausas::where(["id_empresa" => $id_empresa, "is_ativo" => true])->get();
@ -207,20 +191,34 @@ class DashboardController extends Controller
$id_empresa = Helper::getIdEmpresa();
$fila = Filas::where('id', $id)->where('id_empresa', $id_empresa)->first();
$agentesNaFila = DB::table('supervisor as s')
->leftJoin('atendimento as a', function ($join) {
$data_atual = date('Y-m-d h:i:s');
$join->on('s.id_usuario', '=', 'a.id_usuario')
->where(DB::raw('DATE(a.data_reg)'), $data_atual);
})
$agentesNaFila = DB::table("supervisor as s")
->leftJoin("queues as q", "q.nome", "=", "s.fila")
->join("tokens as t", "t.id_usuario", "=", "s.id_usuario")
->select(DB::raw("(now() - s.tempo_login) AS login"), DB::raw('COALESCE(COUNT(a.id), 0) AS qtde_atendimento'), 's.*', 't.token')
->select(
"s.id",
"s.nome",
"s.matricula",
"s.motivo_pausa",
"s.fila",
"s.status",
"t.token",
"q.id as id_queue",
DB::raw("(now() - s.tempo_login) AS login"),
DB::raw(
"(
SELECT count(*) FROM atendimento ma
WHERE 'START' = (SELECT m2.evento FROM eventos_atendimento m2
WHERE ma.uniqueid = m2.uniqueid
ORDER BY m2.id DESC LIMIT 1)
AND ma.matricula = s.matricula
) as atendimentos_atuais"
)
)
->where([
['s.id_empresa', $id_empresa],
['fila', $fila->nome],
["s.id_empresa", "=", $id_empresa],
['q.nome', $fila->nome],
])
->groupBy('s.id', 't.token')
->groupBy('s.id', 't.token', "q.id")
->get();
return response()->json(['data' => $agentesNaFila]);

10
public/js/views/agentesLogados/index.js

@ -46,13 +46,9 @@ async function montarRelatorios() {
<td class="p-3 text-sm text-gray-700 dark:text-gray-100">${supervisor.nome}</td>
<td class="p-3 text-sm text-gray-700 dark:text-gray-100">${supervisor.matricula}</td>
<td class="p-3 text-sm text-gray-700 dark:text-gray-100">${tempoFormatado}</td>
<td class="p-3 text-sm text-gray-700 dark:text-gray-100">${supervisor.motivo_pausa ?? "Sem Pausa"}</td>
<td class="p-3 text-sm text-${colorStatus[supervisor.status]}">${supervisor.status}</td>
<td class="p-3 text-sm text-gray-700 dark:text-gray-100">${supervisor.qtde_atendimento}</td>
<td class="p-3 text-sm text-gray-700 dark:text-gray-100">${supervisor.atendimentos_atuais}</td>
<td class="p-3 text-sm font-bold flex items-center gap-2 flex-wrap">
${agenteIsPausa}
<button class="bg-red-600 text-white flex-1 rounded text-xl text-center py-2 px-3" onclick="desconectarAgente(${supervisor.matricula}, '${supervisor.token}')">
@ -67,7 +63,7 @@ async function montarRelatorios() {
async function desconectarAgente(matricula, token) {
if (confirm("Deseja realmente desconectar do sistema?")) {
logoff(matricula, token).then((res) => {
logoff(matricula, token).then(() => {
montarRelatorios();
})
}
@ -75,7 +71,7 @@ async function desconectarAgente(matricula, token) {
async function retirarPausa(matricula, token) {
if (confirm("Deseja retirar a pausa do agente?")) {
sairPausa(matricula, token).then((res) => {
sairPausa(matricula, token).then(() => {
montarRelatorios();
})
}

Loading…
Cancel
Save