init commit
All checks were successful
build-api-image / build (push) Successful in 51s

This commit is contained in:
Antonio Lopes dos Santos
2026-08-04 16:52:02 -03:00
commit afec302c3e
11594 changed files with 1636728 additions and 0 deletions

View File

@@ -0,0 +1,97 @@
<?php
namespace App\Http\Controllers\Impressao\Imunizacao\Relatorios;
use App\Http\Controllers\Controller;
use App\Models\Cadastro\Localizacao\Endereco;
use App\Models\Cadastro\SujeitoAtencao\Usuario;
use App\Models\Imunizacao\SaidaVacina;
use App\Utils\Exports\Pdf1;
use App\Utils\MaskUtil;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
class BaixaController extends Controller
{
private const TITLE = 'BAIXA';
private const TEMPLATE = 'imunizacao.baixa';
public static function getTemplate($id)
{
$saidaVacina = SaidaVacina::findOrFail($id);
$resultado = collect([
'id' => $saidaVacina->id,
'entrada_vacina_id' => $saidaVacina->entrada_vacina_id,
'data_saida' => Carbon::createFromFormat('Y-m-d', $saidaVacina->saida->data_saida)->format('d/m/Y'),
'motivo' => self::getMotivos()->firstWhere('id', $saidaVacina->saida->motivo_id) ? self::getMotivos()->firstWhere('id', $saidaVacina->saida->motivo_id)->nome : '',
'quantidade' => $saidaVacina->quantidade,
'observacao' => $saidaVacina->saida->observacao,
'material' => $saidaVacina->vacina->nome,
'lote' => $saidaVacina->entradaVacinaOrigem->lote,
'validade' => $saidaVacina->entradaVacinaOrigem->data_validade_lote->format('d/m/Y'),
]);
$entradaVacina = DB::table('imunizacao_entrada_vacina')
->select([
'cadastro_unidade.nome_fantasia AS unidade',
'cadastro_infraestrutura.telefone',
'cadastro_infraestrutura.endereco_id',
'cadastro_lotacao.usuario_id',
DB::raw("
CASE WHEN cadastro_infraestrutura.principal THEN
cadastro_unidade.nome_fantasia
ELSE
cadastro_infraestrutura.nome
END AS infraestrutura_nome
"),
])
->join('imunizacao_entrada', 'imunizacao_entrada.id', 'imunizacao_entrada_vacina.entrada_id')
->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_entrada.sala_vacinacao_id')
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id')
->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id')
->join('cadastro_lotacao', 'cadastro_lotacao.infraestrutura_id', 'cadastro_infraestrutura.id')
->where('imunizacao_entrada_vacina.id', $resultado['entrada_vacina_id'])
->first();
$endereco = Endereco::findOrFail($entradaVacina->endereco_id)->completo;
$usuario = Usuario::findOrFail($saidaVacina->lotacao->usuario_id)->nome;
$resultado['endereco'] = $endereco;
$resultado['usuario'] = $usuario;
return $resultado->merge($entradaVacina);
}
private static function getMotivos()
{
return DB::table('imunizacao_saida_motivo')
->select([
'id',
'nome',
])
->orderBy('nome')
->get();
}
public function __invoke($id)
{
$data = self::getTemplate($id);
return Pdf1::generate(self::TITLE, self::TEMPLATE, [
'data_saida' => $data['data_saida'],
'motivo' => $data['motivo'],
'quantidade' => $data['quantidade'],
'observacao' => $data['observacao'],
'material' => $data['material'],
'lote' => $data['lote'],
'validade' => $data['validade'],
'unidade' => $data['unidade'],
'local_atendimento' => $data['infraestrutura_nome'],
'telefone' => MaskUtil::getPhoneMasked($data['telefone']),
'endereco' => $data['endereco'],
'usuario' => $data['usuario'],
]);
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Controllers\Impressao\Imunizacao\Relatorios;
use App\Http\Controllers\Controller;
use App\Services\Imunizacao\RelatorioConsolidadoAplicacaoService;
use App\Utils\Exports\Pdf1;
class RelatorioConsolidadoAplicacaoController extends Controller
{
private const TITLE = 'RELATÓRIO CONSOLIDADO DE APLICAÇÃO';
private const TEMPLATE = 'imunizacao.relatorio-consolidado-aplicacao';
public static function getTemplate()
{
return RelatorioConsolidadoAplicacaoService::getPrintData();
}
public function __invoke()
{
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
}
}

View File

@@ -0,0 +1,76 @@
<?php
namespace App\Http\Controllers\Impressao\Imunizacao\Relatorios;
use App\Http\Controllers\Controller;
use App\Services\Imunizacao\RelatorioDeAplicacaoService;
use App\Utils\Exports\Pdf1;
class RelatorioDeAplicacaoController extends Controller
{
private const TITLE = 'RELATÓRIO DE APLICAÇÃO';
private const TEMPLATE = 'imunizacao.relatorio-de-aplicacao';
public static function getTemplate()
{
$registros = RelatorioDeAplicacaoService::search();
$registros['filtros'] = request()->all();
return $registros;
}
public function __invoke()
{
$data = self::getTemplate();
$filtros = $data['filtros'];
$registros = $data['registros'];
$tipoRegistro = isset($filtros['tipo_registro']) ? $registros[0]->registro : 'Todos';
$salaVacinacao = isset($filtros['sala_vacinacao']) ? $registros[0]->sala : 'Todas';
$vacina = isset($filtros['vacina']) ? $registros[0]->vacina : 'Todas';
$dose = isset($filtros['dose']) ? $registros[0]->dose : 'Todas';
$sexo = isset($filtros['sexo']) ? $registros[0]->sexo : 'Ambos';
$unidade = isset($filtros['unidade']) ? $registros[0]->unidade : 'Todas';
$area = isset($filtros['area']) ? $registros[0]->area : 'Todas';
$microarea = isset($filtros['microarea']) ? $registros[0]->microarea : 'Todas';
$classificacao = isset($filtros['classificacao']) ? $registros[0]->classificacao : 'Todas';
$prontuario = isset($filtros['prontuario']) ? $registros[0]->prontuario : 'Todos';
$periodo = $filtros['periodo'];
$faixaEtariaInicial = $filtros['faixa_etaria']['inicial'];
$faixaEtariaFinal = $filtros['faixa_etaria']['final'];
$faixaEtariaInicialAnos = $faixaEtariaInicial['anos'] ?? 'Não informado';
$faixaEtariaInicialMeses = $faixaEtariaInicial['meses'] ?? 'Não informado';
$faixaEtariaInicialDias = $faixaEtariaInicial['dias'] ?? 'Não informado';
$faixaEtariaFinalAnos = $faixaEtariaFinal['anos'] ?? 'Não informado';
$faixaEtariaFinalMeses = $faixaEtariaFinal['meses'] ?? 'Não informado';
$faixaEtariaFinalDias = $faixaEtariaInicial['dias'] ?? 'Não informado';
$colunas = collect(request()->selected_columns);
return Pdf1::generate(self::TITLE, self::TEMPLATE, [
'periodo' => "{$periodo['start']} até {$periodo['end']}",
'tipoRegistro' => $tipoRegistro,
'salaVacinacao' => $salaVacinacao,
'vacina' => $vacina,
'dose' => $dose,
'sexo' => $sexo,
'unidade' => $unidade,
'areaMicroarea' => "{$area}/{$microarea}",
'classificacao' => $classificacao,
'faixaInicialAnos' => $faixaEtariaInicialAnos,
'faixaInicialMeses' => $faixaEtariaInicialMeses,
'faixaInicialDias' => $faixaEtariaInicialDias,
'faixaFinalAnos' => $faixaEtariaFinalAnos,
'faixaFinalMeses' => $faixaEtariaFinalMeses,
'faixaFinalDias' => $faixaEtariaFinalDias,
'prontuario' => $prontuario,
'colunas' => $colunas,
'items' => $registros,
'totalizadores' => $data['totalizadores'],
], 'landscape');
}
}