From e3deb43133b964efb2d3ab6eacccb965ca64160c Mon Sep 17 00:00:00 2001 From: Felipe Fontana Date: Tue, 2 Apr 2024 15:45:57 -0400 Subject: [PATCH] Att: exibindo nome dos destinos ao inves do ID nas modais redirect options, horarios e horarios options --- app/Models/Horario.php | 34 ++++++++++++++----- app/Models/HorarioOption.php | 25 +++++++++++--- app/Models/RedirectOption.php | 32 ++++++++++++----- .../views/admin/cadastros/horarios.blade.php | 2 +- .../admin/cadastros/horariosOption.blade.php | 2 +- .../admin/cadastros/redirectOption.blade.php | 2 +- 6 files changed, 74 insertions(+), 23 deletions(-) diff --git a/app/Models/Horario.php b/app/Models/Horario.php index 4cd3ece..415c3af 100644 --- a/app/Models/Horario.php +++ b/app/Models/Horario.php @@ -23,26 +23,44 @@ class Horario extends Model public function list(array $params) { - $horarios = DB::table('horarios as h') - ->join('number_channel as nc', 'nc.id', '=', 'h.id_number') - ->select('h.*', 'nc.title as name_channel'); + + $horarios = DB::table(DB::raw("( + SELECT h.*, nc.title as name_channel, nc.id_empresa as id_empresa, nc.id as id_number, + CASE + WHEN h.opcao = '1' THEN q.nome + WHEN h.opcao = '2' THEN r.name + WHEN h.opcao = '3' THEN u.nome + WHEN h.opcao = '4' THEN h.acao + WHEN h.opcao = '5' THEN h.nome + WHEN h.opcao = '6' THEN h.acao + ELSE NULL + END AS additional_info + FROM horarios as h + INNER JOIN number_channel nc on h.id_number = nc.id + INNER JOIN types t on h.opcao::integer = t.id + LEFT JOIN queues q ON h.opcao = '1' AND q.id = (case when h.acao ~ '^[0-9]+$' then h.acao::integer else 0 end) + LEFT JOIN usuarios u ON h.opcao = '3' AND u.id = (case when h.acao ~ '^[0-9]+$' then h.acao::integer else 0 end) + LEFT JOIN redirect r ON h.opcao = '2' AND r.id = (case when h.acao ~ '^[0-9]+$' then h.acao::integer else 0 end) + ) as t")); + $horarios->selectRaw('t.*, name_channel, t.additional_info'); + if (is_array($params['id_empresa'])) { - $horarios->whereIn('nc.id_empresa', $params['id_empresa']); + $horarios->whereIn('t.id_empresa', $params['id_empresa']); } else { - $horarios->where('nc.id_empresa', $params['id_empresa']); + $horarios->where('t.id_empresa', $params['id_empresa']); } if(isset($params['id_number'])){ - $horarios->where('h.id_number', $params['id_number']); + $horarios->where('t.id_number', $params['id_number']); } if(isset($params['nome'])){ - $horarios->where('h.nome', $params['nome']); + $horarios->where('t.nome', $params['nome']); } if(isset($params['status'])){ - $horarios->where('h.status', $params['status']); + $horarios->where('t.status', $params['status']); } return $horarios->get(); diff --git a/app/Models/HorarioOption.php b/app/Models/HorarioOption.php index 0c35c7b..a759695 100644 --- a/app/Models/HorarioOption.php +++ b/app/Models/HorarioOption.php @@ -33,12 +33,29 @@ class HorarioOption extends Model public function list(array $params) { - $options = DB::table('horarios_itens as hi') - ->join("horarios as h", "h.id", "=", "hi.id_horario") - ->select("hi.*", "h.nome as horario_nome"); + $options = DB::table(DB::raw("( + SELECT hi.*, h.nome as horario_nome, + CASE + WHEN hi.opcao = '1' THEN q.nome + WHEN hi.opcao = '2' THEN r.name + WHEN hi.opcao = '3' THEN u.nome + WHEN hi.opcao = '4' THEN hi.acao + WHEN hi.opcao = '5' THEN h.nome + WHEN hi.opcao = '6' THEN hi.acao + ELSE NULL + END AS additional_info + FROM horarios_itens hi + INNER JOIN horarios h on hi.id_horario = h.id + INNER JOIN types t on h.opcao::integer = t.id + LEFT JOIN queues q ON hi.opcao = '1' AND q.id = (case when hi.acao ~ '^[0-9]+$' then hi.acao::integer else 0 end) + LEFT JOIN usuarios u ON hi.opcao = '3' AND u.id = (case when hi.acao ~ '^[0-9]+$' then hi.acao::integer else 0 end) + LEFT JOIN redirect r ON hi.opcao = '2' AND r.id = (case when hi.acao ~ '^[0-9]+$' then hi.acao::integer else 0 end) + ) as t")); + + $options->selectRaw('t.*, t.horario_nome, t.additional_info'); if (isset($params['id_horario'])) { - $options->where('hi.id_horario', $params['id_horario']); + $options->where('t.id_horario', $params['id_horario']); } return $options->orderBy('id', 'asc')->get(); diff --git a/app/Models/RedirectOption.php b/app/Models/RedirectOption.php index 0659f0d..84a082c 100644 --- a/app/Models/RedirectOption.php +++ b/app/Models/RedirectOption.php @@ -36,24 +36,40 @@ class RedirectOption extends Model public function list(array $params) { - $options = DB::table('redirect_option as ro') - ->join("redirect as r", "r.id", "=", "ro.id_redirect") - ->join("types as t", "t.id", "=", "ro.id_type") - ->select("ro.*", "r.name as redirect_name", "t.name as type_name"); + $options = DB::table(DB::raw("( + SELECT ro.*, r.name as redirect_name, t.name as type_name, + CASE + WHEN ro.id_type = 1 THEN q.nome + WHEN ro.id_type = 2 THEN r.name + WHEN ro.id_type = 3 THEN u.nome + WHEN ro.id_type = 4 THEN ro.code_id + WHEN ro.id_type = 5 THEN h.nome + WHEN ro.id_type = 6 THEN ro.code_id + ELSE NULL + END AS additional_info + FROM redirect_option ro + INNER JOIN redirect r on ro.id_redirect = r.id + INNER JOIN types t on ro.id_type = t.id + LEFT JOIN queues q ON ro.id_type = 1 AND q.id = (case when ro.code_id ~ '^[0-9]+$' then ro.code_id::integer else 0 end) + LEFT JOIN horarios h ON ro.id_type = 5 AND h.id = (case when ro.code_id ~ '^[0-9]+$' then ro.code_id::integer else 0 end) + LEFT JOIN usuarios u ON ro.id_type = 3 AND u.id = (case when ro.code_id ~ '^[0-9]+$' then ro.code_id::integer else 0 end) + ) as t")); + + $options->selectRaw('t.*, redirect_name, type_name, t.additional_info'); if (isset($params['sequence'])) { - $options->where('ro.sequence', $params['sequence']); + $options->where('t.sequence', $params['sequence']); } if (isset($params['search'])) { - $options->where(DB::raw('LOWER(ro.nome)'), 'LIKE', "%{$params['search']}%"); + $options->where(DB::raw('LOWER(t.nome)'), 'LIKE', "%{$params['search']}%"); } if (isset($params['id_redirect'])) { - $options->where('ro.id_redirect', $params['id_redirect']); + $options->where('t.id_redirect', $params['id_redirect']); } - return $options->orderBy('sequence', 'asc')->get(); + return $options->orderBy('t.sequence', 'asc')->get(); } public function create(string|int $sequence, string $description, string|int $id_redirect, string|int $id_type, string|int $code_id, bool $hide, string $data_reg, bool $status) diff --git a/resources/views/admin/cadastros/horarios.blade.php b/resources/views/admin/cadastros/horarios.blade.php index a9007e9..8801b46 100644 --- a/resources/views/admin/cadastros/horarios.blade.php +++ b/resources/views/admin/cadastros/horarios.blade.php @@ -70,7 +70,7 @@ {{ $horario->nome }} {{ $horario->name_channel }} {{ $tipos[$horario->opcao] }} - {{ $horario->acao }} + {{ $horario->additional_info }} @if ($horario->status) ATIVO @else diff --git a/resources/views/admin/cadastros/horariosOption.blade.php b/resources/views/admin/cadastros/horariosOption.blade.php index fac3e5b..69c48ea 100644 --- a/resources/views/admin/cadastros/horariosOption.blade.php +++ b/resources/views/admin/cadastros/horariosOption.blade.php @@ -96,7 +96,7 @@ {{ $meses[$option->mes] }} {{ $meses[$option->mes_fim] }} {{ $tipos[$option->opcao] }} - {{ $option->acao }} + {{ $option->additional_info }}