sort_by) { $sortDesc = filter_var(request()->sort_desc, FILTER_VALIDATE_BOOLEAN); $itens = $sortDesc ? $itens->sortByDesc(request()->sort_by)->values() : $itens->sortBy(request()->sort_by)->values(); } $itens->each(function ($item) { $item->data = (new Carbon($item->data))->format('d/m/Y'); if (!is_null($item->paciente_data_nascimento)) { $item->paciente_data_nascimento = (new Carbon($item->paciente_data_nascimento))->format('d/m/Y'); } $item->ocupacao_cbo = collect([$item->ocupacao_codigo, $item->ocupacao_nome]) ->filter() ->implode(' - '); }); $unidade = Unidade::find(request()->unidade_id); $infraestrutura = Infraestrutura::find(request()->infraestrutura_id); $ocupacao = Ocupacao::find(request()->ocupacao_id); $especialidade = Especialidade::find(request()->especialidade_id); $usuario = Usuario::find(request()->usuario_id); $procedimento = Procedimento::where('codigo', request()->procedimento_codigo)->orderByDesc('competencia_id')->first(); $totalRegistros = $itens->count(); $totalProcedimentos = $itens->sum(fn ($item) => $item->procedimentos_sigtap->count()); $totalAbpg = $itens->sum(fn ($item) => $item->procedimentos_abpg->count()); $demandaTipoLabels = ['agendada' => 'Agendada', 'espontanea' => 'Espontânea']; $demandaTipo = $demandaTipoLabels[request()->demanda_tipo] ?? 'Todos'; return [ 'inicio' => request()->periodo['start'], 'fim' => request()->periodo['end'], 'unidade' => $unidade->nome_fantasia ?? 'Todas', 'infraestrutura' => $infraestrutura->nome ?? 'Todas', 'ocupacao' => $ocupacao ? "{$ocupacao->codigo} - {$ocupacao->nome}" : 'Todas', 'especialidade' => $especialidade->nome ?? 'Todas', 'usuario' => $usuario->cidadao->nome ?? 'Todos', 'procedimento' => $procedimento ? "{$procedimento->codigo} - {$procedimento->nome}" : 'Todos', 'demandaTipo' => $demandaTipo, 'colunas' => collect(request()->columns), 'itens' => $itens, 'totalRegistros' => $totalRegistros, 'totalProcedimentos' => $totalProcedimentos, 'totalAbpg' => $totalAbpg, ]; } public function __invoke() { return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate()); } }