Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 45 additions & 24 deletions ieducar/intranet/educar_aluno_lst.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
use App\Models\DataSearch\StudentFilter;
use App\Models\LegacyGeneralConfiguration;
use App\Models\LegacyStudent;
use Illuminate\Pagination\LengthAwarePaginator;

return new class extends clsListagem
{
Expand Down Expand Up @@ -125,10 +126,12 @@ public function Gerar()
$this->nome_pai = $this->cleanNameSearch(name: $this->nome_pai);
$this->nome_mae = $this->cleanNameSearch(name: $this->nome_mae);

$cpf = preg_replace(pattern: '/\D/', replacement: '', subject: $this->cpf_aluno);

$dataFilter = [
'rg' => preg_replace(pattern: '/\D/', replacement: '', subject: $this->rg_aluno),
'year' => $this->ano,
'cpf' => preg_replace(pattern: '/\D/', replacement: '', subject: $this->cpf_aluno),
'cpf' => $cpf,
'inep' => $this->cod_inep,
'grade' => $this->ref_cod_serie,
'school' => $this->ref_cod_escola,
Expand All @@ -148,31 +151,10 @@ public function Gerar()
$this->limite = 20;
$this->offset = ($_GET["pagina_{$this->nome}"]) ? $_GET["pagina_{$this->nome}"] * $this->limite - $this->limite : 0;

$studentFilter = new StudentFilter(...$dataFilter);
$students = LegacyStudent::query()->findStudentWithMultipleSearch(studentFilter: $studentFilter);
$students = $this->searchStudents(cpf: $cpf, dataFilter: $dataFilter);

foreach ($students as $student) {
$nomeAluno = $student->person->name;
$nomeSocial = $student->individual->nome_social;

if ($nomeSocial) {
$nomeAluno = $nomeSocial . '<br> <i>Nome de registro: </i>' . $nomeAluno;
}

$nomeResponsavel = mb_strtoupper(string: $student->getGuardianName() ?? '-');
$cpfResponsavel = ucfirst(string: $student->getGuardianCpf());
$nomeMae = mb_strtoupper(string: $student->individual->mother->name ?? '-');

$linhas = array_filter(array: [
"<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">$student->cod_aluno</a>",
$configuracoes['mostrar_codigo_inep_aluno'] === 1 ? "<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">" . ($student->inepNumber ?? '-'). '</a>' : null,
"<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">$nomeAluno</a>",
"<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">$nomeMae</a>",
"<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">$nomeResponsavel</a>",
"<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">$cpfResponsavel</a>",
]);

$this->addLinhas(linha: $linhas);
$this->addLinhas(linha: $this->studentRow(student: $student, configuracoes: $configuracoes));
}

$this->addPaginador2(strUrl: 'educar_aluno_lst.php', intTotalRegistros: $students->total(), mixVariaveisMantidas: $_GET, nome: $this->nome, intResultadosPorPagina: $this->limite);
Expand Down Expand Up @@ -200,4 +182,43 @@ public function cleanNameSearch($name)
{
return trim(string: preg_replace(pattern: '/\W/', replacement: ' ', subject: limpa_acentos(str_nome: $name)));
}

private function searchStudents(?string $cpf, array $dataFilter)
{
if ($cpf && !Portabilis_Utils_Validation::validatesCpf(cpf: $cpf)) {
// Um CPF inválido nunca deve corresponder a alunos reais. Sem esse
// corte, o valor era usado como está na busca (where('cpf', $cpf)),
// e um CPF inválido usado como placeholder para "sem CPF cadastrado"
// (ex.: 00000000000) pode estar salvo em vários registros, fazendo
// a busca por um CPF inválido retornar múltiplos alunos.
return new LengthAwarePaginator(items: [], total: 0, perPage: $this->limite, options: ['pageName' => 'pagina_' . $this->nome]);
}

$studentFilter = new StudentFilter(...$dataFilter);

return LegacyStudent::query()->findStudentWithMultipleSearch(studentFilter: $studentFilter);
}

private function studentRow(LegacyStudent $student, $configuracoes): array
{
$nomeAluno = $student->person->name;
$nomeSocial = $student->individual->nome_social;

if ($nomeSocial) {
$nomeAluno = $nomeSocial . '<br> <i>Nome de registro: </i>' . $nomeAluno;
}

$nomeResponsavel = mb_strtoupper(string: $student->getGuardianName() ?? '-');
$cpfResponsavel = ucfirst(string: $student->getGuardianCpf());
$nomeMae = mb_strtoupper(string: $student->individual->mother->name ?? '-');

return array_filter(array: [
"<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">$student->cod_aluno</a>",
$configuracoes['mostrar_codigo_inep_aluno'] === 1 ? "<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">" . ($student->inepNumber ?? '-'). '</a>' : null,
"<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">$nomeAluno</a>",
"<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">$nomeMae</a>",
"<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">$nomeResponsavel</a>",
"<a href=\"educar_aluno_det.php?cod_aluno=$student->cod_aluno\">$cpfResponsavel</a>",
]);
}
};