diff --git a/app/Models/Builders/LegacyStudentBuilder.php b/app/Models/Builders/LegacyStudentBuilder.php index cfbaf8c046..ea8476e95e 100644 --- a/app/Models/Builders/LegacyStudentBuilder.php +++ b/app/Models/Builders/LegacyStudentBuilder.php @@ -3,6 +3,8 @@ namespace App\Models\Builders; use App\Models\DataSearch\StudentFilter; +use App\Models\RegistrationStatus; +use iEducar\Modules\Enrollments\Model\EnrollmentStatusFilter; use Illuminate\Database\Eloquent\Relations\BelongsTo; class LegacyStudentBuilder extends LegacyBuilder @@ -149,17 +151,20 @@ public function whereWithoutReport(): self }); } - public function whereRegistration($year, $course, $grade, $school) + public function whereRegistration($year, $course, $grade, $school, $status = null) { - return $this->where(function ($query) use ($year, $course, $grade, $school) { + return $this->where(function ($query) use ($year, $course, $grade, $school, $status) { $query->whereHas( 'registrations', - function ($query) use ($year, $course, $grade, $school) { + function ($query) use ($year, $course, $grade, $school, $status) { $query->active(); $query->when($year, fn ($q) => $q->where('ano', $year)); $query->when($course, fn ($q) => $q->where('ref_cod_curso', $course)); $query->when($school, fn ($q) => $q->where('ref_ref_cod_escola', $school)); $query->when($grade, fn ($q) => $q->where('ref_ref_cod_serie', $grade)); + $query->when($status, fn ($q) => (int) $status === EnrollmentStatusFilter::EXCEPT_TRANSFERRED_OR_ABANDONMENT + ? $q->whereNotIn('aprovado', [RegistrationStatus::TRANSFERRED, RegistrationStatus::ABANDONED]) + : $q->where('aprovado', $status)); } ); }); @@ -198,6 +203,7 @@ public function findStudentWithMultipleSearch(StudentFilter $studentFilter) 'course' => $studentFilter->course, 'school' => $studentFilter->school, 'year' => $studentFilter->year, + 'status' => $studentFilter->enrollmentStatus, ], ] ) diff --git a/app/Models/DataSearch/StudentFilter.php b/app/Models/DataSearch/StudentFilter.php index 2c38c7bc02..db7e2bc969 100644 --- a/app/Models/DataSearch/StudentFilter.php +++ b/app/Models/DataSearch/StudentFilter.php @@ -20,6 +20,7 @@ public function __construct( public readonly ?int $school = null, public readonly ?int $course = null, public readonly ?int $grade = null, + public readonly ?int $enrollmentStatus = null, public readonly ?int $perPage = null, public readonly ?string $pageName = null, public readonly ?bool $similarity = null, diff --git a/ieducar/intranet/educar_aluno_lst.php b/ieducar/intranet/educar_aluno_lst.php index 45e8f60eda..12bfc59f44 100644 --- a/ieducar/intranet/educar_aluno_lst.php +++ b/ieducar/intranet/educar_aluno_lst.php @@ -2,6 +2,7 @@ use App\Models\DataSearch\StudentFilter; use App\Models\LegacyStudent; +use iEducar\Modules\Enrollments\Model\EnrollmentStatusFilter; return new class extends clsListagem { @@ -100,6 +101,7 @@ public function Gerar() $this->inputsHelper()->dynamic(helperNames: 'escolaSemFiltroPorUsuario', inputOptions: ['required' => false, 'value' => $this->ref_cod_escola, 'label_hint' => 'Retorna alunos com matrículas na escola selecionada']); $this->inputsHelper()->dynamic(helperNames: 'curso', inputOptions: ['required' => false, 'label_hint' => 'Retorna alunos com matrículas no curso selecionado']); $this->inputsHelper()->dynamic(helperNames: 'serie', inputOptions: ['required' => false, 'label_hint' => 'Retorna alunos com matrículas na série selecionada']); + $this->inputsHelper()->dynamic(helperNames: 'situacaoMatricula', inputOptions: ['required' => false, 'label_hint' => 'Retorna alunos com matrículas compatíveis com esta situação']); $obj_permissoes = new clsPermissoes; $cod_escola = $obj_permissoes->getEscola(int_idpes_usuario: $this->pessoa_logada); @@ -134,6 +136,7 @@ public function Gerar() $dataFilter = [ 'rg' => preg_replace(pattern: '/\D/', replacement: '', subject: $this->rg_aluno), 'year' => $this->ano, + 'enrollmentStatus' => ((int) $this->situacao_matricula_id && (int) $this->situacao_matricula_id !== EnrollmentStatusFilter::ALL) ? (int) $this->situacao_matricula_id : null, 'cpf' => preg_replace(pattern: '/\D/', replacement: '', subject: $this->cpf_aluno), 'inep' => $this->cod_inep, 'grade' => $this->ref_cod_serie,