This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\ProntoAtendimento;
|
||||
|
||||
use App\Enums\PainelSenha\Status;
|
||||
use App\Models\Cadastro\Estabelecimento\Unidade;
|
||||
use App\Models\PainelSenha\Prioridade;
|
||||
use App\Services\ProntoAtendimento\Fila\FilaService;
|
||||
use App\Services\Service;
|
||||
use App\Models\PainelSenha\Status as StatusFila;
|
||||
|
||||
class FilaAtendimentoService extends Service
|
||||
{
|
||||
public static function list()
|
||||
{
|
||||
$centroCustoLogado = self::getCurrentCentroCusto();
|
||||
|
||||
return [
|
||||
'form' => [
|
||||
'unidades' => Unidade::orderBy('nome_fantasia')
|
||||
->get()
|
||||
->map(fn ($unidade) => [
|
||||
'id' => $unidade->id,
|
||||
'nome_fantasia' => $unidade->nome_fantasia,
|
||||
'infraestruturas' => $unidade->infraestruturas
|
||||
->map(fn ($infraestrutura) => [
|
||||
'id' => $infraestrutura->id,
|
||||
'nome' => $infraestrutura->nome,
|
||||
'centros_custo' => $infraestrutura->centrosCusto
|
||||
->map(fn ($centroCusto) => [
|
||||
'id' => $centroCusto->id,
|
||||
'setor_nome' => $centroCusto->setor->nome,
|
||||
'setor_tipo_id' => $centroCusto->setor->tipo_id,
|
||||
'status' => StatusFila::orderBy('nome')
|
||||
->get()
|
||||
->map(fn ($status) => [
|
||||
'id' => $status->id,
|
||||
'nome' => $status->nome,
|
||||
])
|
||||
])
|
||||
->sortBy('setor_nome')
|
||||
->values()
|
||||
])
|
||||
->sortBy('nome')
|
||||
->values()
|
||||
]),
|
||||
'prioridades' => Prioridade::orderBy('nome')
|
||||
->get()
|
||||
->map(function($query) {
|
||||
return [
|
||||
'id' => $query->id,
|
||||
'nome' => $query->nome,
|
||||
];
|
||||
}),
|
||||
],
|
||||
'model' => [
|
||||
'unidade_id' => $centroCustoLogado->infraestrutura->unidade_id,
|
||||
'infraestrutura_id' => $centroCustoLogado->infraestrutura_id,
|
||||
'centro_custo_id' => $centroCustoLogado->id,
|
||||
'status_id' => Status::EM_ESPERA,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public static function index()
|
||||
{
|
||||
$fila = FilaService::index([
|
||||
'centro_custo_id' => request()->centro_custo_id,
|
||||
'setor_tipo_id' => request()->setor_tipo_id,
|
||||
]);
|
||||
|
||||
return [
|
||||
'fila' => $fila->filter(fn ($f) => $f['status']['id'] == request()->status_id)->values(),
|
||||
'total_em_espera' => $fila
|
||||
->filter(fn ($f) => $f['status']['id'] == Status::EM_ESPERA)->count(),
|
||||
'total_em_atendimento' => $fila
|
||||
->filter(fn ($f) => $f['status']['id'] == Status::EM_ATENDIMENTO)->count(),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user