Restaura o filtro de situação na listagem de alunos - #1162
Conversation
Re-adiciona o select "Situação" (situação da matrícula) na seção de
filtros da listagem de alunos, removido em 2022 (branch
try-fix-student-search) quando a busca deixou de usar a view
relatorio.view_situacao. Filtra direto em matricula.aprovado via
whereHas('registrations'), mantendo matrícula ativa, reusando o helper
SituacaoMatricula e o enum EnrollmentStatusFilter.
|
|
@edineivaldameri consegue verificar se com as melhorias na |
|
@msoares94 as remoções ocorrem por performance e pela confusão que causava em diversos clientes por não se saber exatamente qual matrícula considerar dentro do cadastro do aluno, quando filtros como o ano não eram preenchido por exemplo. Nesse cenário encaminhei o PR para análise da a área de produto e assim que estivermos um parecer a gente organiza o possível fluxo aqui. |
|
@edineivaldameri A restauração do filtro é coerente com necessidade dos usuários, e após a mudança de organização nessa seção podemos aninhar novamente o filtro de situação sem reproduzir os problemas de usabilidade antigos, ficaria da seguinte forma:
Deixo com você a avaliação da parte de performance da tela, certificando a melhor implementação respeitando os padrões ideais. PSC @betinaribeiro |




Contexto
A listagem de alunos (
ieducar/intranet/educar_aluno_lst.php) tinha um filtro "Situação" (situação da matrícula: Cursando, Transferido, Falecido, etc.) que facilitava localizar alunos em situações específicas.Ele foi removido em 2022: primeiro a busca deixou de usar o
INNER JOINcom a viewrelatorio.view_situacao, passando a filtrar direto emmatricula.aprovado(commite1aab68bd, "Remove view situação e aplica filtro direto na matricula"), e em seguida o campo saiu da tela (commit0c6dd38e1/ merge862d72c9c, branchtry-fix-student-search). Quando a busca foi reescrita para Eloquent (LegacyStudentBuilder::findStudentWithMultipleSearch), o filtro não foi reintroduzido. Hoje não há como filtrar a listagem de alunos por situação da matrícula.O que este PR faz
Reintroduz o select "Situação" na seção "Filtros de alunos", já na arquitetura atual (
StudentFilter+LegacyStudentBuilder), reusando componentes existentes.Implementação
app/Models/DataSearch/StudentFilter.php: novo parâmetroenrollmentStatus.ieducar/intranet/educar_aluno_lst.php: re-adicionainputsHelper()->dynamic('situacaoMatricula')(reusa o helperPortabilis_View_Helper_DynamicInput_SituacaoMatriculae o enumEnrollmentStatusFilter); alimentaenrollmentStatus(viranullquando "Todas"/ALL→ no-op).app/Models/Builders/LegacyStudentBuilder.php: o filtroregistrationpassa a aceitarstatusewhereRegistration()filtra pormatricula.aprovadoviawhereHas('registrations', ...), mantendoactive():whereNotIn('aprovado', [RegistrationStatus::TRANSFERRED, RegistrationStatus::ABANDONED]);where('aprovado', $status).Por que não reintroduz o problema da remoção anterior
A remoção de 2022 estava ligada ao
INNER JOINcomrelatorio.view_situacao. Esta versão não usa a view: filtra direto emmatricula.aprovadoviawhereHas('registrations', ...)(subconsultaEXISTS), sem multiplicar linhas. É o mesmo caminho que o projeto já adotou no commite1aab68bde que os scopes deLegacyRegistrationBuilder(statusTransfer(),finalized()) já usam. Arelatorio.view_situacaoopera no nível de matrícula_turma (join porcod_matricula/cod_turma/sequencial), inadequada para uma listagem por aluno.Como testar
ativo = 1) aparecem; "Todas" não aplica filtro; "Exceto Transferidos/Deixou de Frequentar" exclui as situações 4 e 6.