Browse Source

Att: alterando codigo para funcionar com multi canais

Matheus
Felipe Fontana 7 months ago
parent
commit
a2b851bf47
  1. 6
      app/Http/Controllers/Admin/DashboardController.php
  2. 42
      app/Http/Controllers/Admin/FilasController.php
  3. 9
      app/Http/Controllers/Admin/GraficosController.php
  4. 18
      app/Http/Controllers/Admin/HorariosController.php
  5. 20
      app/Http/Controllers/Admin/HorariosOptionController.php
  6. 7
      app/Http/Controllers/Admin/RedirectController.php
  7. 13
      app/Http/Controllers/Admin/RedirectOptionController.php
  8. 18
      app/Models/Filas.php
  9. 27
      app/Models/Horario.php
  10. 8
      app/Models/Redirect.php
  11. 22
      public/js/views/fila/atualizaFila.js
  12. 4
      public/js/views/horarios/montaSelect.js
  13. 4
      public/js/views/horarios/requestType.js
  14. 17
      resources/views/admin/cadastros/filas.blade.php
  15. 15
      resources/views/admin/cadastros/horarios.blade.php
  16. 18
      resources/views/admin/cadastros/redirects.blade.php
  17. 2
      resources/views/admin/cadastros/templates.blade.php
  18. 2
      resources/views/admin/conectarAgente/conectarAgente.blade.php
  19. 7
      resources/views/components/modal/edit/modalEditFila.blade.php
  20. 10
      resources/views/components/modal/insert/modalFila.blade.php
  21. 2
      resources/views/components/modal/insert/modalTemplates.blade.php

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

@ -57,8 +57,9 @@ class DashboardController extends Controller
$filasMaisUsadas = DB::table('queues as q') $filasMaisUsadas = DB::table('queues as q')
->join('eventos_atendimento as ea', 'ea.id_queue', '=', 'q.id') ->join('eventos_atendimento as ea', 'ea.id_queue', '=', 'q.id')
->join('number_channel as nc', 'q.id_number', '=', 'nc.id')
->select('q.nome', DB::raw('count(ea.id_queue) as qtde_fila')) ->select('q.nome', DB::raw('count(ea.id_queue) as qtde_fila'))
->where('q.id_empresa', $id_empresa) ->where('nc.id_empresa', $id_empresa)
->groupBy('q.nome') ->groupBy('q.nome')
->get(); ->get();
@ -129,7 +130,8 @@ class DashboardController extends Controller
FROM FROM
queues q queues q
LEFT JOIN supervisor s on s.fila = q.nome LEFT JOIN supervisor s on s.fila = q.nome
WHERE q.id_empresa = :id_empresa AND q.is_ativa = true LEFT JOIN number_channel nc on q.id_number = nc.id
WHERE nc.id_empresa = :id_empresa AND q.is_ativa = true
GROUP BY q.nome, q.id GROUP BY q.nome, q.id
", ['id_empresa' => $id_empresa]); ", ['id_empresa' => $id_empresa]);

42
app/Http/Controllers/Admin/FilasController.php

@ -2,11 +2,12 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Helpers\Helper;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\PesquisaSatisfacao; use App\Models\PesquisaSatisfacao;
use App\Models\Filas; use App\Models\Filas;
use App\Models\NumberChannel;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
@ -15,7 +16,8 @@ class FilasController extends Controller
public function __construct( public function __construct(
protected PesquisaSatisfacao $pesquisaSatisfacaoRepository, protected PesquisaSatisfacao $pesquisaSatisfacaoRepository,
protected Filas $filasRepository protected Filas $filasRepository,
protected NumberChannel $numberChannelRepository
) { ) {
} }
@ -29,16 +31,25 @@ class FilasController extends Controller
$filas = filas::class; $filas = filas::class;
$user = auth()->user(); $user = auth()->user();
$id_empresa = $user->empresa->first()->id; $id_empresa = Helper::getEmpresas();
$pesquisas = $this->pesquisaSatisfacaoRepository->list(['id_empresa' => $id_empresa, 'status' => true]); if (!is_int($id_empresa)){
$empresasIds = $id_empresa->pluck('id')->toArray();
} else {
$empresasIds = $id_empresa;
}
$search = strtolower($request->pesquisa); $search = strtolower($request->pesquisa);
$search_channel = ($request->channel);
$status = $request->status === "desativado" ? false : true; $status = $request->status === "desativado" ? false : true;
$filas = $this->filasRepository->list(['id_empresa' => $id_empresa, 'status' => $status, 'search' => $search]); $filas = $this->filasRepository->list(['status' => $status, 'search' => $search, 'id_number' => $search_channel]);
$pesquisas = $this->pesquisaSatisfacaoRepository->list(['id_empresa' => $empresasIds, 'status' => true]);
$channels = $this->numberChannelRepository->list(['id_empresa' => $empresasIds]);
return view('admin.cadastros.filas', compact('filas', 'pesquisas', 'status', 'search')); return view('admin.cadastros.filas', compact('filas', 'pesquisas', 'status', 'search', 'channels', 'search_channel'));
} }
public function create(Request $request) public function create(Request $request)
@ -78,7 +89,7 @@ class FilasController extends Controller
Filas::create([ Filas::create([
'nome' => strtoupper($request->nome), 'nome' => strtoupper($request->nome),
'id_empresa' => $id_empresa, 'id_empresa' => $id_empresa,
'id_pesquisa' => $request->pesquisa, 'id_number' => $request->channel,
'is_ativa' => $is_ativa 'is_ativa' => $is_ativa
]); ]);
@ -96,15 +107,24 @@ class FilasController extends Controller
return redirect('filas'); return redirect('filas');
} }
$id_empresa = $user->empresa->first()->id; $id_empresa = Helper::getEmpresas();
if (!is_int($id_empresa)){
$empresasIds = $id_empresa->pluck('id')->toArray();
} else {
$empresasIds = $id_empresa;
}
$pesquisas = $this->pesquisaSatisfacaoRepository->list(['id_empresa' => $empresasIds, 'status' => true]);
$pesquisas = $this->pesquisaSatisfacaoRepository->list(['id_empresa' => $id_empresa, 'status' => true]); $channels = $this->numberChannelRepository->list(['id_empresa' => $empresasIds]);
$setor = Filas::find($id); $setor = Filas::find($id);
$response = [ $response = [
'data' => [ 'data' => [
'setor' => $setor, 'setor' => $setor,
'pesquisas' => $pesquisas 'pesquisas' => $pesquisas,
'channels' => $channels
], ],
]; ];
@ -143,7 +163,7 @@ class FilasController extends Controller
Filas::where('id', $id)->update([ Filas::where('id', $id)->update([
'nome' => strtoupper($request->nome), 'nome' => strtoupper($request->nome),
'id_pesquisa' => $request->pesquisa, 'id_number' => $request->channel,
'is_ativa' => $is_ativa 'is_ativa' => $is_ativa
]); ]);

9
app/Http/Controllers/Admin/GraficosController.php

@ -35,13 +35,14 @@ class GraficosController extends Controller
->join('eventos_atendimento as ea', 'a.uniqueid', '=', 'ea.uniqueid') ->join('eventos_atendimento as ea', 'a.uniqueid', '=', 'ea.uniqueid')
->join('queues as q', 'ea.id_queue', '=', 'q.id') ->join('queues as q', 'ea.id_queue', '=', 'q.id')
->join('usuarios as u', 'a.id_usuario', '=', 'u.id') ->join('usuarios as u', 'a.id_usuario', '=', 'u.id')
->join('number_channel as nc', 'q.id_number', '=', 'nc.id')
->select(DB::raw('count(a.id_usuario) as qtde_atendimento'), 'u.nome') ->select(DB::raw('count(a.id_usuario) as qtde_atendimento'), 'u.nome')
->where('ea.id', function ($query) { ->where('ea.id', function ($query) {
$query->select(DB::raw('MAX(id)')) $query->select(DB::raw('MAX(id)'))
->from('eventos_atendimento as ee') ->from('eventos_atendimento as ee')
->whereColumn('ee.uniqueid', 'ea.uniqueid'); ->whereColumn('ee.uniqueid', 'ea.uniqueid');
}) })
->where('q.id_empresa', $id_empresa); ->where('nc.id_empresa', $id_empresa);
if ($dataInicio && $dataFim) { if ($dataInicio && $dataFim) {
$atendimentosData->whereBetween(DB::raw('a.data_reg::DATE'), [$dataInicio, $dataFim]); $atendimentosData->whereBetween(DB::raw('a.data_reg::DATE'), [$dataInicio, $dataFim]);
@ -58,13 +59,14 @@ class GraficosController extends Controller
$atendimentosStatusData = DB::table('atendimento as a') $atendimentosStatusData = DB::table('atendimento as a')
->join('eventos_atendimento as ea', 'a.uniqueid', '=', 'ea.uniqueid') ->join('eventos_atendimento as ea', 'a.uniqueid', '=', 'ea.uniqueid')
->join('queues as q', 'ea.id_queue', '=', 'q.id') ->join('queues as q', 'ea.id_queue', '=', 'q.id')
->join('number_channel as nc', 'q.id_number', '=', 'nc.id')
->select(DB::raw('count(ea.evento) as qtde_usados'), 'ea.evento') ->select(DB::raw('count(ea.evento) as qtde_usados'), 'ea.evento')
->where('ea.id', function ($query) { ->where('ea.id', function ($query) {
$query->select(DB::raw('MAX(id)')) $query->select(DB::raw('MAX(id)'))
->from('eventos_atendimento as ee') ->from('eventos_atendimento as ee')
->whereColumn('ee.uniqueid', 'ea.uniqueid'); ->whereColumn('ee.uniqueid', 'ea.uniqueid');
}) })
->where('q.id_empresa', $id_empresa); ->where('nc.id_empresa', $id_empresa);
if ($dataInicio && $dataFim) { if ($dataInicio && $dataFim) {
$atendimentosStatusData->whereBetween(DB::raw('ea.data_reg::DATE'), [$dataInicio, $dataFim]); $atendimentosStatusData->whereBetween(DB::raw('ea.data_reg::DATE'), [$dataInicio, $dataFim]);
@ -81,13 +83,14 @@ class GraficosController extends Controller
$filasMaisUsadas = DB::table('atendimento as a') $filasMaisUsadas = DB::table('atendimento as a')
->join('eventos_atendimento as ea', 'a.uniqueid', '=', 'ea.uniqueid') ->join('eventos_atendimento as ea', 'a.uniqueid', '=', 'ea.uniqueid')
->join('queues as q', 'ea.id_queue', '=', 'q.id') ->join('queues as q', 'ea.id_queue', '=', 'q.id')
->join('number_channel as nc', 'q.id_number', '=', 'nc.id')
->select(DB::raw('count(ea.id_queue) as qtde_fila'), 'q.nome') ->select(DB::raw('count(ea.id_queue) as qtde_fila'), 'q.nome')
->where('ea.id', function ($query) { ->where('ea.id', function ($query) {
$query->select(DB::raw('MAX(id)')) $query->select(DB::raw('MAX(id)'))
->from('eventos_atendimento as ee') ->from('eventos_atendimento as ee')
->whereColumn('ee.uniqueid', 'ea.uniqueid'); ->whereColumn('ee.uniqueid', 'ea.uniqueid');
}) })
->where('q.id_empresa', $id_empresa); ->where('nc.id_empresa', $id_empresa);
if ($dataInicio && $dataFim) { if ($dataInicio && $dataFim) {
$filasMaisUsadas->whereBetween(DB::raw('ea.data_reg::DATE'), [$dataInicio, $dataFim]); $filasMaisUsadas->whereBetween(DB::raw('ea.data_reg::DATE'), [$dataInicio, $dataFim]);

18
app/Http/Controllers/Admin/HorariosController.php

@ -43,17 +43,23 @@ class HorariosController extends Controller
$empresasIds = $id_empresa; $empresasIds = $id_empresa;
} }
$search = $request->channel;
$types = Types::all(); $types = Types::all();
$horarios = $this->horarioRepository->list(["id_empresa" => $empresasIds]); $horarios = $this->horarioRepository->list(["id_empresa" => $empresasIds, "id_number" => $search]);
$numberChannels = $this->numberChannelRepository->list(["id_empresa" => $empresasIds]); $numberChannels = $this->numberChannelRepository->list(["id_empresa" => $empresasIds]);
return view('admin.cadastros.horarios', compact('horarios', 'numberChannels', 'types')); return view('admin.cadastros.horarios', compact('horarios', 'numberChannels', 'types', 'search'));
} }
public function show(Request $request) public function show(Request $request)
{ {
$data = $request->all(); $data = $request->all();
$id_type = $request->segment(2); $request = $request->segment(2);
$request = explode('-', $request);
$id_type = $request[0];
$id_number = $request[1];
if (empty($id_type)) { if (empty($id_type)) {
return response()->json(['data' => 'Parametro ID_TYPE é obrigatório']); return response()->json(['data' => 'Parametro ID_TYPE é obrigatório']);
@ -65,16 +71,16 @@ class HorariosController extends Controller
$data = null; $data = null;
switch ($typeName) { switch ($typeName) {
case 'queue': case 'queue':
$data = $this->queueRepository->list(["id_empresa" => $id_empresa, "status" => true]); $data = $this->queueRepository->list(["id_number" => $id_number, "status" => true]);
break; break;
case 'redirect': case 'redirect':
$data = $this->redirectRepository->list(["id_empresa" => $id_empresa]); $data = $this->redirectRepository->list(["id_empresa" => $id_empresa, "id_number" => $id_number]);
break; break;
case 'agent': case 'agent':
$data = $this->agenteRepository->list(["id_empresa" => $id_empresa, "status" => true]); $data = $this->agenteRepository->list(["id_empresa" => $id_empresa, "status" => true]);
break; break;
case 'horario': case 'horario':
$data = $this->horarioRepository->list(["id_empresa" => $id_empresa, "status" => true]); $data = $this->horarioRepository->list(["id_empresa" => $id_empresa, "status" => true, "id_number" => $id_number]);
break; break;
default: default:
$data = null; $data = null;

20
app/Http/Controllers/Admin/HorariosOptionController.php

@ -40,6 +40,7 @@ class HorariosOptionController extends Controller
public function show(Request $request) public function show(Request $request)
{ {
$id_type = $request->segment(4); $id_type = $request->segment(4);
$id_horario = $request->segment(2);
if (empty($id_type)) { if (empty($id_type)) {
return response()->json(['data' => 'Parametro ID_TYPE é obrigatório']); return response()->json(['data' => 'Parametro ID_TYPE é obrigatório']);
@ -47,20 +48,29 @@ class HorariosOptionController extends Controller
$type = DB::table('types')->where([['id', $id_type], ['status', true]])->first(); $type = DB::table('types')->where([['id', $id_type], ['status', true]])->first();
$typeName = $type->name; $typeName = $type->name;
$id_empresa = Helper::getIdEmpresa(); $id_empresa = Helper::getEmpresas();
if (!is_int($id_empresa)){
$empresasIds = $id_empresa->pluck('id')->toArray();
} else {
$empresasIds = $id_empresa;
}
$horario = $this->horarioRepository->get(["id_empresa" => $empresasIds, "id_horario" => $id_horario]);
$id_number = $horario->id_number;
$data = null; $data = null;
switch ($typeName) { switch ($typeName) {
case 'queue': case 'queue':
$data = $this->queueRepository->list(["id_empresa" => $id_empresa, "status" => true]); $data = $this->queueRepository->list(["id_number" => $id_number, "status" => true]);
break; break;
case 'redirect': case 'redirect':
$data = $this->redirectRepository->list(["id_empresa" => $id_empresa]); $data = $this->redirectRepository->list(["id_empresa" => $empresasIds, "id_number" => $id_number]);
break; break;
case 'agent': case 'agent':
$data = $this->agenteRepository->list(["id_empresa" => $id_empresa, "status" => true]); $data = $this->agenteRepository->list(["id_empresa" => $empresasIds, "status" => true]);
break; break;
case 'horario': case 'horario':
$data = $this->horarioRepository->list(["id_empresa" => $id_empresa, "status" => true]); $data = $this->horarioRepository->list(["id_empresa" => $empresasIds, "status" => true, "id_number" => $id_number]);
break; break;
default: default:
$data = null; $data = null;

7
app/Http/Controllers/Admin/RedirectController.php

@ -20,7 +20,7 @@ class RedirectController extends Controller
) { ) {
} }
public function index() public function index(Request $request)
{ {
$user = auth()->user(); $user = auth()->user();
if(Gate::forUser($user)->denies('show_redirect')){ if(Gate::forUser($user)->denies('show_redirect')){
@ -28,6 +28,7 @@ class RedirectController extends Controller
} }
$empresas = Helper::getEmpresas(); $empresas = Helper::getEmpresas();
$search = $request->channel;
if (!is_int($empresas)){ if (!is_int($empresas)){
$empresasIds = $empresas->pluck('id')->toArray(); $empresasIds = $empresas->pluck('id')->toArray();
@ -35,10 +36,10 @@ class RedirectController extends Controller
$empresasIds = $empresas; $empresasIds = $empresas;
} }
$redirects = $this->redirectRepository->list(["id_empresa" => $empresasIds]); $redirects = $this->redirectRepository->list(["id_empresa" => $empresasIds, "id_number" => $search]);
$numberChannels = $this->numberChannelRepository->list(["id_empresa" => $empresasIds]); $numberChannels = $this->numberChannelRepository->list(["id_empresa" => $empresasIds]);
return view('admin.cadastros.redirects', compact('redirects', 'numberChannels')); return view('admin.cadastros.redirects', compact('redirects', 'numberChannels', 'search'));
} }
public function store(Request $request) public function store(Request $request)

13
app/Http/Controllers/Admin/RedirectOptionController.php

@ -40,6 +40,11 @@ class RedirectOptionController extends Controller
public function show(Request $request) public function show(Request $request)
{ {
$id_type = $request->segment(4); $id_type = $request->segment(4);
$id_redirect = $request->segment(2);
$id_empresa = Helper::getIdEmpresa();
$redirect = $this->redirectRepository->get(["id_empresa" => $id_empresa, "id" => $id_redirect]);
$id_number = $redirect->id_number;
if (empty($id_type)) { if (empty($id_type)) {
return response()->json(['data' => 'Parametro ID_TYPE é obrigatório']); return response()->json(['data' => 'Parametro ID_TYPE é obrigatório']);
@ -47,20 +52,20 @@ class RedirectOptionController extends Controller
$type = DB::table('types')->where([['id', $id_type], ['status', true]])->first(); $type = DB::table('types')->where([['id', $id_type], ['status', true]])->first();
$typeName = $type->name; $typeName = $type->name;
$id_empresa = Helper::getIdEmpresa();
$data = null; $data = null;
switch ($typeName) { switch ($typeName) {
case 'queue': case 'queue':
$data = $this->queueRepository->list(["id_empresa" => $id_empresa, "status" => true]); $data = $this->queueRepository->list(["id_number" => $id_number, "status" => true]);
break; break;
case 'redirect': case 'redirect':
$data = $this->redirectRepository->list(["id_empresa" => $id_empresa]); $data = $this->redirectRepository->list(["id_empresa" => $id_empresa, "id_number" => $id_number]);
break; break;
case 'agent': case 'agent':
$data = $this->agenteRepository->list(["id_empresa" => $id_empresa, "status" => true]); $data = $this->agenteRepository->list(["id_empresa" => $id_empresa, "status" => true]);
break; break;
case 'horario': case 'horario':
$data = $this->horarioRepository->list(["id_empresa" => $id_empresa, "status" => true]); $data = $this->horarioRepository->list(["id_empresa" => $id_empresa, "status" => true, "id_number" => $id_number]);
break; break;
case 'midia': case 'midia':
$data = 'midia'; $data = 'midia';

18
app/Models/Filas.php

@ -16,7 +16,7 @@ class Filas extends Model
protected $fillable = [ protected $fillable = [
'nome', 'nome',
'id_empresa', 'id_number',
'is_ativa', 'is_ativa',
'id_pesquisa' 'id_pesquisa'
]; ];
@ -25,14 +25,10 @@ class Filas extends Model
{ {
$filas = DB::table('queues as q') $filas = DB::table('queues as q')
->leftJoin('pesquisa_satisfacao as ps', 'ps.id', '=', 'q.id_pesquisa') ->leftJoin('pesquisa_satisfacao as ps', 'ps.id', '=', 'q.id_pesquisa')
->select('q.id', 'q.nome as name', 'q.id_empresa', 'q.is_ativa', 'q.id_pesquisa', 'ps.nome as name_pesquisa'); ->select('q.id', 'q.nome as name', 'q.id_number', 'q.is_ativa', 'q.id_pesquisa', 'ps.nome as name_pesquisa');
if (is_array($params['id_empresa'])) { if (isset($params['id_number'])) {
// Se $params['id_empresa'] for um array, use a condição whereIn $filas->where('q.id_number', $params['id_number']);
$filas->whereIn('q.id_empresa', $params['id_empresa']);
} else {
// Se for um único valor, use a condição normal
$filas->where('q.id_empresa', $params['id_empresa']);
} }
if (isset($params['search'])) { if (isset($params['search'])) {
@ -54,8 +50,8 @@ class Filas extends Model
$filas->where('q.id', $params['id']); $filas->where('q.id', $params['id']);
} }
if (isset($params['id_empresa'])) { if (isset($params['id_number'])) {
$filas->where('q.id_empresa', $params['id_empresa']); $filas->where('q.id_number', $params['id_number']);
} }
if (isset($params['search'])) { if (isset($params['search'])) {

27
app/Models/Horario.php

@ -48,6 +48,33 @@ class Horario extends Model
return $horarios->get(); return $horarios->get();
} }
public function get(array $params)
{
$horarios = DB::table('horarios as h')
->join('number_channel as nc', 'nc.id', '=', 'h.id_number')
->select('h.*');
if (is_array($params['id_empresa'])) {
$horarios->whereIn('nc.id_empresa', $params['id_empresa']);
} else {
$horarios->where('nc.id_empresa', $params['id_empresa']);
}
if(isset($params['id_number'])){
$horarios->where('h.id_number', $params['id_number']);
}
if(isset($params['nome'])){
$horarios->where('h.nome', $params['nome']);
}
if(isset($params['status'])){
$horarios->where('h.status', $params['status']);
}
return $horarios->first();
}
public function create(int $id_number, string $nome, string $opcao, string $acao, bool $status) public function create(int $id_number, string $nome, string $opcao, string $acao, bool $status)
{ {
DB::beginTransaction(); DB::beginTransaction();

8
app/Models/Redirect.php

@ -36,6 +36,10 @@ class Redirect extends Model
$redirects->where('r.id_number', $params['id_number']); $redirects->where('r.id_number', $params['id_number']);
} }
if(isset($params['id'])){
$redirects->where('r.id', $params['id']);
}
if(isset($params['name'])){ if(isset($params['name'])){
$redirects->where('r.name', $params['name']); $redirects->where('r.name', $params['name']);
} }
@ -61,6 +65,10 @@ class Redirect extends Model
$redirects->where('r.id_number', $params['id_number']); $redirects->where('r.id_number', $params['id_number']);
} }
if(isset($params['id'])){
$redirects->where('r.id', $params['id']);
}
if(isset($params['name'])){ if(isset($params['name'])){
$redirects->where('r.name', $params['name']); $redirects->where('r.name', $params['name']);
} }

22
public/js/views/fila/atualizaFila.js

@ -7,6 +7,7 @@ function atualizarFila(id_fila) {
}) { }) {
const fila_data = data.setor; const fila_data = data.setor;
const pesquisas = data.pesquisas; const pesquisas = data.pesquisas;
const channels = data.channels;
const modal = document.querySelector('.modal-edit'); const modal = document.querySelector('.modal-edit');
modal.style.display = 'block'; modal.style.display = 'block';
modal.querySelector('form').action = `/filas/editar/${fila_data.id}`; modal.querySelector('form').action = `/filas/editar/${fila_data.id}`;
@ -18,16 +19,29 @@ function atualizarFila(id_fila) {
"status" value="off" checked> <span class="dark:text-gray-100">Não</span>` "status" value="off" checked> <span class="dark:text-gray-100">Não</span>`
} }
const containerChannels = modal.querySelector("select[name='pesquisa']"); const containerChannels = modal.querySelector("select[name='channels']");
containerChannels.innerHTML = containerChannels.innerHTML = '';
channels.forEach(channel => {
if (fila_data.id_number === channel.id) {
containerChannels.innerHTML +=
` <option value="${channel.id}" selected>${channel.nome}</option>`
} else {
containerChannels.innerHTML +=
` <option value="${channel.id}">${channel.nome}</option>`
}
})
const containerPesquisas = modal.querySelector("select[name='pesquisa']");
containerPesquisas.innerHTML =
` <option value="">Nenhuma</option>` ` <option value="">Nenhuma</option>`
pesquisas.forEach(pesquisa => { pesquisas.forEach(pesquisa => {
if (fila_data.id_pesquisa === pesquisa.id) { if (fila_data.id_pesquisa === pesquisa.id) {
containerChannels.innerHTML += containerPesquisas.innerHTML +=
` <option value="${pesquisa.id}" selected>${pesquisa.nome}</option>` ` <option value="${pesquisa.id}" selected>${pesquisa.nome}</option>`
} else { } else {
containerChannels.innerHTML += containerPesquisas.innerHTML +=
` <option value="${pesquisa.id}">${pesquisa.nome}</option>` ` <option value="${pesquisa.id}">${pesquisa.nome}</option>`
} }
}) })

4
public/js/views/horarios/montaSelect.js

@ -1,7 +1,9 @@
async function montaSelectDestino(id_type, modal, code_id = null) { async function montaSelectDestino(id_type, modal, code_id = null) {
const data = await requestType(id_type); const id_number = modal.querySelector("select[name='id_number']").value;
const data = await requestType(id_type, id_number);
const selectDestino = modal.querySelector(".select-destino"); const selectDestino = modal.querySelector(".select-destino");
const inputDestino = modal.querySelector(".input-destino"); const inputDestino = modal.querySelector(".input-destino");
if (!data) { if (!data) {
selectDestino.style.display = 'none'; selectDestino.style.display = 'none';
selectDestino.disabled = true; selectDestino.disabled = true;

4
public/js/views/horarios/requestType.js

@ -1,9 +1,9 @@
function requestType(id_type) { function requestType(id_number, id_type) {
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
$.ajax({ $.ajax({
type: "get", type: "get",
dataType: 'json', dataType: 'json',
url: `horarios/${id_type}`, url: `horarios/${id_number}-${id_type}`,
success: function(response) { success: function(response) {
const data = response.data.data; const data = response.data.data;
resolve(data); resolve(data);

17
resources/views/admin/cadastros/filas.blade.php

@ -37,6 +37,17 @@
<option value="desativado" selected>Desativados</option> <option value="desativado" selected>Desativados</option>
@endif @endif
</select> </select>
<h1 class="text-gray-900 dark:text-gray-100">Canal: </h1>
<select class="border-none rounded overflow-hidden dark:bg-gray-800 dark:text-gray-100" id="channel" name="channel" style="width: 300px;">
@foreach($channels as $channel)
<option value="{{ $channel->id}}" {{ !empty($search_channel) && ($channel->id == $search_channel) ? 'selected' : '' }}>
{{ $channel->title }}
</option>
@endforeach
</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> <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> </form>
</div> </div>
@ -46,6 +57,7 @@
<tr> <tr>
<th class="p-3 text-sm font-semibold tracking-wide text-left">ID</th> <th class="p-3 text-sm font-semibold tracking-wide text-left">ID</th>
<th class="p-3 text-sm font-semibold tracking-wide text-left">Nome</th> <th class="p-3 text-sm font-semibold tracking-wide text-left">Nome</th>
<th class="p-3 text-sm font-semibold tracking-wide text-left">Channel</th>
<th class="p-3 text-sm font-semibold tracking-wide text-left">Pesquisa</th> <th class="p-3 text-sm font-semibold tracking-wide text-left">Pesquisa</th>
<th class="p-3 text-sm font-semibold tracking-wide text-left">Status</th> <th class="p-3 text-sm font-semibold tracking-wide text-left">Status</th>
<th class="p-3 text-sm font-semibold tracking-wide text-left">Ações</th> <th class="p-3 text-sm font-semibold tracking-wide text-left">Ações</th>
@ -57,6 +69,7 @@
<tr class="bg-white dark:bg-gray-800 dark:border-gray-600 border-b-2"> <tr class="bg-white dark:bg-gray-800 dark:border-gray-600 border-b-2">
<td class="p-3 text-sm text-gray-700 dark:text-gray-100">{{$fila->id}}</td> <td class="p-3 text-sm text-gray-700 dark:text-gray-100">{{$fila->id}}</td>
<td class="p-3 text-sm text-gray-700 dark:text-gray-100">{{$fila->name}}</td> <td class="p-3 text-sm text-gray-700 dark:text-gray-100">{{$fila->name}}</td>
<td class="p-3 text-sm text-gray-700 dark:text-gray-100">{{$fila->id_number}}</td>
<td class="p-3 text-sm text-gray-700 dark:text-gray-100">{{$fila->name_pesquisa}}</td> <td class="p-3 text-sm text-gray-700 dark:text-gray-100">{{$fila->name_pesquisa}}</td>
@if($fila->is_ativa) @if($fila->is_ativa)
@ -92,6 +105,6 @@
<script src="{{ asset('js/views/fila/atualizaFila.js') }}"></script> <script src="{{ asset('js/views/fila/atualizaFila.js') }}"></script>
<x-modal.insert.modalFila :pesquisas="$pesquisas"></x-modalFila> <x-modal.insert.modalFila :pesquisas="$pesquisas" :channels="$channels"></x-modalFila>
<x-modal.edit.modalEditFila :pesquisas="$pesquisas"></x-modalEditFila> <x-modal.edit.modalEditFila :pesquisas="$pesquisas" :channels="$channels"></x-modalEditFila>
</x-app-layout> </x-app-layout>

15
resources/views/admin/cadastros/horarios.blade.php

@ -31,6 +31,21 @@
@click="modal = !modal" type="button">Cadastrar Horários</button> @click="modal = !modal" type="button">Cadastrar Horários</button>
@endcan @endcan
</div> </div>
<form action="{{route('horarios.index')}}" method="GET" class="flex w-full gap-3 flex-col lg:flex-row ">
<div class="flex-1 flex flex-col gap-1">
<label class="text-gray-900 dark:text-gray-100" >Canal: </label>
<select class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100" id="channel" name="channel" style="width: 300px;">
@foreach($numberChannels as $channel)
<option value="{{ $channel->id}}" {{ !empty($search) && ($channel->id == $search) ? 'selected' : '' }}>
{{ $channel->title }}
</option>
@endforeach
</select>
</div>
<div class="flex-1 flex flex-col gap-1" style="background-color: transparent; margin-top: 25px;">
<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>
</div>
</form>
</div> </div>
<div class="body mt-4 overflow-auto rounded-lg shadow"> <div class="body mt-4 overflow-auto rounded-lg shadow">

18
resources/views/admin/cadastros/redirects.blade.php

@ -23,6 +23,21 @@
@click="modal = !modal" type="button">Cadastrar Redirect</button> @click="modal = !modal" type="button">Cadastrar Redirect</button>
@endcan @endcan
</div> </div>
<form action="{{route('redirects.index')}}" method="GET" class="flex w-full gap-3 flex-col lg:flex-row ">
<div class="flex-1 flex flex-col gap-1">
<label class="text-gray-900 dark:text-gray-100" >Canal: </label>
<select class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100" id="channel" name="channel" style="width: 300px;">
@foreach($numberChannels as $channel)
<option value="{{ $channel->id}}" {{ !empty($search) && ($channel->id == $search) ? 'selected' : '' }}>
{{ $channel->title }}
</option>
@endforeach
</select>
</div>
<div class="flex-1 flex flex-col gap-1" style="background-color: transparent; margin-top: 25px;">
<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>
</div>
</form>
</div> </div>
<div class="body mt-4 overflow-auto rounded-lg shadow"> <div class="body mt-4 overflow-auto rounded-lg shadow">
@ -32,6 +47,7 @@
<th class="p-3 text-sm font-semibold tracking-wide text-left ">ID</th> <th class="p-3 text-sm font-semibold tracking-wide text-left ">ID</th>
<th class="p-3 text-sm font-semibold tracking-wide text-left">Nome</th> <th class="p-3 text-sm font-semibold tracking-wide text-left">Nome</th>
<th class="p-3 text-sm font-semibold tracking-wide text-left">Descrição</th> <th class="p-3 text-sm font-semibold tracking-wide text-left">Descrição</th>
<th class="p-3 text-sm font-semibold tracking-wide text-left">Channel</th>
<th class="p-3 text-sm font-semibold tracking-wide text-left">Status</th> <th class="p-3 text-sm font-semibold tracking-wide text-left">Status</th>
<th class="p-3 text-sm font-semibold tracking-wide text-left">Inicial</th> <th class="p-3 text-sm font-semibold tracking-wide text-left">Inicial</th>
<th class="p-3 text-sm font-semibold tracking-wide text-left">Opções</th> <th class="p-3 text-sm font-semibold tracking-wide text-left">Opções</th>
@ -46,7 +62,7 @@
<td <td
class="p-3 text-sm text-gray-700 dark:text-gray-100 sequence sequence-{{ $redirect->id }}"> class="p-3 text-sm text-gray-700 dark:text-gray-100 sequence sequence-{{ $redirect->id }}">
{{ $redirect->description }}</td> {{ $redirect->description }}</td>
<td class="p-3 text-sm text-gray-700 dark:text-gray-100">{{ $redirect->id_number }}</td>
@if ($redirect->status) @if ($redirect->status)
<td class="p-3 text-sm text-green-500 font-bold">ATIVO</td> <td class="p-3 text-sm text-green-500 font-bold">ATIVO</td>
@else @else

2
resources/views/admin/cadastros/templates.blade.php

@ -19,7 +19,7 @@
<label class="text-gray-900 dark:text-gray-100" >Canal: </label> <label class="text-gray-900 dark:text-gray-100" >Canal: </label>
<select class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100" id="channel" name="channel" style="width: 300px;"> <select class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100" id="channel" name="channel" style="width: 300px;">
@foreach($numberChannels as $channel) @foreach($numberChannels as $channel)
<option value="{{$channel->id}}">{{$channel->name}}</option> <option value="{{$channel->id}}">{{$channel->title}}</option>
@endforeach @endforeach
</select> </select>
</div> </div>

2
resources/views/admin/conectarAgente/conectarAgente.blade.php

@ -21,7 +21,7 @@
<label>Escolha o canal: </label> <label>Escolha o canal: </label>
<select name="channel_id" class="rounded-md p-2 dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100"> <select name="channel_id" class="rounded-md p-2 dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100">
@foreach($channels as $channel) @foreach($channels as $channel)
<option value="{{$channel->id}}">{{$channel->name}}</option> <option value="{{$channel->id}}">{{$channel->title}}</option>
@endforeach @endforeach
</select> </select>
</div> </div>

7
resources/views/components/modal/edit/modalEditFila.blade.php

@ -21,6 +21,13 @@
<label for="" class="dark:text-gray-100">Nome: </label> <label for="" class="dark:text-gray-100">Nome: </label>
<input type="text" class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100" placeholder="Digite o nome: " name="nome"> <input type="text" class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100" placeholder="Digite o nome: " name="nome">
</div> </div>
<div class="flex flex-col gap-2">
<label class="dark:text-gray-100">Channel: </label>
<select
class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100"
name="channel" required>
</select>
</div>
<div class="flex flex-col gap-2"> <div class="flex flex-col gap-2">
<label class="dark:text-gray-100">Pesquisa de satisfação: </label> <label class="dark:text-gray-100">Pesquisa de satisfação: </label>
<select <select

10
resources/views/components/modal/insert/modalFila.blade.php

@ -21,6 +21,16 @@
<label class="dark:text-gray-100">Nome: </label> <label class="dark:text-gray-100">Nome: </label>
<input type="text" class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100" placeholder="Digite o nome: " name="nome"> <input type="text" class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100" placeholder="Digite o nome: " name="nome">
</div> </div>
<div class="flex flex-col gap-2">
<label class="dark:text-gray-100">Channel: </label>
<select
class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100"
name="channel" required>
@foreach ($channels as $channel)
<option value="{{ $channel->id }}">{{ $channel->title }}</option>
@endforeach
</select>
</div>
<div class="flex flex-col gap-2"> <div class="flex flex-col gap-2">
<label class="dark:text-gray-100">Pesquisa de satisfação: </label> <label class="dark:text-gray-100">Pesquisa de satisfação: </label>
<select <select

2
resources/views/components/modal/insert/modalTemplates.blade.php

@ -23,7 +23,7 @@
class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100 uppercase select-channel" class="w-full dark:bg-gray-800 placeholder:text-gray-800 dark:placeholder:text-gray-100 dark:text-gray-100 uppercase select-channel"
name="channel" id="channel-select"> name="channel" id="channel-select">
@foreach($numberChannels as $channel) @foreach($numberChannels as $channel)
<option value="{{ json_encode(['channel' => $channel->channel, 'id' => $channel->id, 'token' => $channel->token, 'workspace' => $channel->work_space]) }}">{{$channel->name}}</option> <option value="{{ json_encode(['channel' => $channel->channel, 'id' => $channel->id, 'token' => $channel->token, 'workspace' => $channel->work_space]) }}">{{$channel->title}}</option>
@endforeach @endforeach
</select> </select>
</div> </div>

Loading…
Cancel
Save