Browse Source

Correcao em desconectar e pausa do agente

1.0.3
guilherme.guia 12 months ago
parent
commit
d7f2b065c3
  1. 10
      app/Http/Controllers/Admin/DashboardController.php
  2. 102
      public/js/views/agentesLogados/index.js
  3. 16
      resources/views/admin/dashboard/agentesLogados.blade.php

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

@ -173,15 +173,12 @@ class DashboardController extends Controller
public function relatoriosFilas($id)
{
if(empty($id)){
return response()->json(['data' => "Parametro ID é obrigatorio"]);
}
$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');
@ -189,16 +186,15 @@ class DashboardController extends Controller
$join->on('s.id_usuario', '=', 'a.id_usuario')
->where(DB::raw('DATE(a.data_reg)'), $data_atual);
})
->select(DB::raw("(now() - s.tempo_login) AS login"), DB::raw('COALESCE(COUNT(a.id), 0) AS qtde_atendimento'), 's.*')
->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')
->where([
['s.id_empresa', $id_empresa],
['fila', $fila->nome],
])
->groupBy('s.id')
->groupBy('s.id', 't.token')
->get();
return response()->json(['data' => $agentesNaFila]);
}
}

102
public/js/views/agentesLogados/index.js

@ -6,8 +6,7 @@ const colorStatus = {
CHAMANDO: "orange-400",
}
function getFilaId()
{
function getFilaId() {
const url = window.location.href;
const splitUrl = url.split('/');
const id = splitUrl[splitUrl.length - 1];
@ -15,12 +14,12 @@ function getFilaId()
}
function getDadosRelatorioDB(fila_id) {
return new Promise(function(resolve, reject){
return new Promise(function (resolve, reject) {
$.ajax({
type: "get",
dataType: 'json',
url: `/dashboard/agentes/${fila_id}/fila`,
success: function(response) {
success: function (response) {
const data = response.data;
resolve(data);
}
@ -28,28 +27,22 @@ function getDadosRelatorioDB(fila_id) {
})
}
async function montarRelatorios()
{
async function montarRelatorios() {
const id = getFilaId();
const data = await getDadosRelatorioDB(id);
let elementsTable = "";
data.forEach(supervisor => {
data.forEach(supervisor => {
const tempoFormatado = supervisor.login.split(".")[0];
const btnPlay = `
<form method="POST" action="/dashboard/agentes/{{$fila->id}}/retirarPausa" title="Retirar Pausa?" class="bg-blue-600 text-white rounded flex-1 text-xl text-center py-2 px-3 cursor-pointer" >
@csrf
<input type="hidden" name="supervisor_id" value="${supervisor.id}">
<button >
<i class="fas fa-play-circle"></i>
</button>
</form>
const btnPlay = `
<button class="bg-blue-600 text-white rounded flex-1 text-xl text-center py-2 px-3 cursor-pointer" onclick="retirarPausa(${supervisor.matricula}, '${supervisor.token}')">
<i class="fas fa-play-circle"></i>
</button>
`
const btnPausa = `<a class="bg-blue-600 text-white rounded flex-1 text-xl text-center py-2 px-3 cursor-pointer" title="Colocar em Pausa?" onclick="selecionaAgente(${supervisor.id})"><i class="fas fa-pause"></i></a>`;
const agenteIsPausa = supervisor.status === "PAUSA" ? btnPlay : btnPausa;
const agenteIsPausa = supervisor.status === "PAUSA" ? btnPlay : btnPausa;
elementsTable += `
<tr class="bg-gray-50 dark:bg-gray-800 dark:text-gray-100 text-center">
@ -66,25 +59,78 @@ async function montarRelatorios()
<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}')">
<i class="fas fa-power-off"></i>
</button>
</td>
</tr>
`
});
$(".table-relatorio").html(elementsTable);
}
{/* <form method="POST" action="/dashboard/agentes/{{$fila->id}}/desconectar" title="Desconectar Pausa?" class="bg-red-600 text-white flex-1 rounded text-xl text-center py-2 px-3" >
@csrf
<input type="hidden" name="supervisor_id" value="${supervisor.id}">
<button >
<i class="fas fa-power-off"></i>
</button>
</form> */}
function selecionaAgente(supervisor_id){
async function desconectarAgente(matricula, token) {
if (confirm("Deseja realmente desconectar do sistema?")) {
logoff(matricula, token).then((res) => {
montarRelatorios();
})
}
}
async function retirarPausa(matricula, token) {
if (confirm("Deseja retirar a pausa do agente?")) {
sairPausa(matricula, token).then((res) => {
montarRelatorios();
})
}
}
const sairPausa = (matricula, token) => new Promise((resolve) => {
$.ajax({
url: `https://${server_api}/api/v1/agente/sairPausa`,
type: "POST",
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token,
"ngrok-skip-browser-warning":"any"
},
data: JSON.stringify({
matricula
}),
success: function (res) {
alert('Pausa removida do Agente!')
resolve(res)
},
error: function (res) {
alert('Nao foi possivel retirar de pausa.')
}
});
})
const logoff = (matricula, token) => new Promise((resolve) => {
$.ajax({
type: "POST",
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token,
"ngrok-skip-browser-warning":"any"
},
url: `https://${server_api}/access/logoff`,
data: JSON.stringify({
matricula
}),
success: function (res) {
alert('Desconectado com sucesso');
resolve(res)
},
error: function (res) {
alert('Não foi possivel deslogar do sistema.')
}
});
})
function selecionaAgente(supervisor_id) {
console.log(supervisor_id);
const modal = document.querySelector(".modal");
modal.style.display = "block";

16
resources/views/admin/dashboard/agentesLogados.blade.php

@ -11,18 +11,6 @@
<h1 class="mb-5 text-gray-900 dark:text-gray-100 text-3xl font-bold text-center">
Agentes na Fila - {{$fila->nome}}
</h1>
<!-- <form action="{{route('filas')}}" method="GET" class="flex w-full gap-3 flex-col lg:flex-row ">
<div class="search bg-white dark:bg-gray-800 rounded px-3 py-1 overflow-hidden">
<i class="fas fa-search dark:text-gray-100"></i>
<input type="text" name="pesquisa" class="border-none bg-transparent focus:ring-transparent
placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100 " placeholder="Pesquise filas">
</div>
<select class="border-none rounded overflow-hidden dark:bg-gray-800 dark:text-gray-100" name="status">
<option value="ativo">Livres</option>
<option value="desativado" selected>Ocupados</option>
</select>
<button class="lg:ml-auto ml-0 bg-blue-900 hover:bg-opacity-90 transition-all text-white py-2 px-6 rounded text-lg overflow-hidden">Pesquisar</button>
</form> -->
</div>
<div class="body mt-8 overflow-auto rounded-lg shadow bg-gray-50 dark:bg-gray-800">
@ -50,12 +38,12 @@
<script src="{{ asset('js/views/agentesLogados/index.js') }}"></script>
<script>
montarRelatorios();
const server_api = "{{env('APP_URL')}}";
montarRelatorios();
setInterval(() => {
montarRelatorios();
}, 10000);
</script>
<x-modal.edit.modalPausarAgente :pausas="$pausas"></x-modalPausarAgente>

Loading…
Cancel
Save