81 lines
3.2 KiB
PHP
81 lines
3.2 KiB
PHP
<?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(),
|
|
];
|
|
}
|
|
}
|