Files
rkm-conectasus-ci-sandbox/api/app/Http/Controllers/Impressao/AtencaoBasica/RelatorioCuidadoDesenvolvimentoInfantilController.php
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

69 lines
3.3 KiB
PHP

<?php
namespace App\Http\Controllers\Impressao\AtencaoBasica;
use App\Http\Controllers\Controller;
use App\Models\Cadastro\Estabelecimento\Infraestrutura;
use App\Models\Cadastro\Estabelecimento\Unidade;
use App\Models\AtencaoBasica\Parametrizacao\Equipe;
use App\Services\AtencaoBasica\RelatorioCuidadoDesenvolvimentoInfantilService;
use App\Models\Cadastro\SujeitoAtencao\Paciente;
use App\Enums\Cadastro\SujeitoAtencao\Sexo;
use App\Utils\Exports\Pdf1;
class RelatorioCuidadoDesenvolvimentoInfantilController extends Controller
{
private const TITLE = 'RELATÓRIO DE CUIDADO E DESENVOLVIMENTO INFANTIL';
private const TEMPLATE = 'atencao-basica.relatorio-cuidado-desenvolvimento-infantil';
public function __invoke()
{
$resultado = RelatorioCuidadoDesenvolvimentoInfantilService::index(request());
$sortByEquipe = request()->input('sort_by_equipe', 'unidadeNomeFantasia');
$sortDescEquipe = (bool) request()->input('sort_desc_equipe', false);
$sortByBuscaAtiva = request()->input('sort_by_busca_ativa', 'unidadeNomeFantasia');
$sortDescBuscaAtiva = (bool) request()->input('sort_desc_busca_ativa', false);
$resultadoPorEquipe = $sortDescEquipe
? collect($resultado['resultadoPorEquipe'])->sortByDesc($sortByEquipe)->values()->toArray()
: collect($resultado['resultadoPorEquipe'])->sortBy($sortByEquipe)->values()->toArray();
$buscaAtivaDados = $sortDescBuscaAtiva
? collect($resultado['buscaAtiva'])->sortByDesc($sortByBuscaAtiva)->values()->toArray()
: collect($resultado['buscaAtiva'])->sortBy($sortByBuscaAtiva)->values()->toArray();
$unidade = Unidade::find(request()->input('unidade_id'));
$infraestrutura = Infraestrutura::find(request()->input('infraestrutura_id'));
$equipe = Equipe::find(request()->input('equipe_id'));
$pacienteId = request()->input('paciente_id');
$paciente = $pacienteId ? Paciente::with('cidadao')->find($pacienteId) : null;
$sexoMap = [
Sexo::MASCULINO => 'Masculino',
Sexo::FEMININO => 'Feminino',
];
$faixaEtaria = request()->input('faixa_etaria', []);
$data = [
'inicio' => request()->input('periodo.start'),
'fim' => request()->input('periodo.end'),
'quadrimestre' => request()->input('quadrimestre'),
'unidade' => $unidade->nome_fantasia ?? 'Todas',
'infraestrutura' => $infraestrutura->nome ?? 'Todos',
'equipe' => $equipe->nome ?? 'Todas',
'sexo' => $sexoMap[request()->input('sexo_id')] ?? 'Todos',
'paciente' => optional(optional(optional($paciente)->first())->cidadao)->nome ?? 'Todos',
'buscaAtiva' => (bool) request()->input('busca_ativa'),
'faixaEtariaInicial' => $faixaEtaria['inicial'] ?? [],
'faixaEtariaFinal' => $faixaEtaria['final'] ?? [],
'totalizadores' => $resultado['totalizadores'],
'resultadoPorEquipe' => $resultadoPorEquipe,
'buscaAtivaDados' => $buscaAtivaDados,
'boasPraticasSelecionadas' => $resultado['boasPraticasSelecionadas'],
'selectedColsBuscaAtiva' => request()->input('selected_cols_busca_ativa', ['pacienteDataNascimento']),
];
return Pdf1::generate(self::TITLE, self::TEMPLATE, $data, 'landscape');
}
}