Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Master #14789

Merged
merged 16 commits into from
Aug 1, 2024
Merged

Master #14789

Show file tree
Hide file tree
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
64 changes: 64 additions & 0 deletions scripts/V726__AJUSTE_QUESTOES_ENCAMINHAMENTO_PLANO_AEE.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
do $$
declare
questionarioId bigint;
questaoId bigint;
questaoComplementarId bigint;
opcaoRespostaId bigint;
questaoIdExistente bigint;
begin
update questao set nome = 'Com base nas observações e no estudo de caso, por qual(is) motivo(s) a sua unidade educacional está encaminhando o estudante ao Atendimento Educacional Especializado (AEE)?'
where id in (select q2.id from questao q2
inner join questionario q on q.id = q2.questionario_id
where q.tipo = 1 and q.nome like '%Seção 2%'
and q2.id not in (select oqc.questao_complementar_id from opcao_questao_complementar oqc)
and q2.nome_componente = 'PORQUE'
order by q2.ordem);

questionarioId := (select id from questionario q
where q.tipo = 1 and q.nome like '%Etapa 3%');

questaoIdExistente := (select q.id
from questao q
where q.questionario_id = questionarioId and q.nome_componente = 'OUTRAS_BARREIRAS');
if (questaoIdExistente IS NULL) then
insert into questao(questionario_id, ordem, nome, observacao, obrigatorio, tipo, opcionais, criado_em, criado_por, criado_rf, nome_componente, dimensao)
values(questionarioId, 4, 'Outras/Nenhuma - Justifique', '', false, 2, '', NOW(), 'SISTEMA', '0', 'OUTRAS_BARREIRAS', 12)
RETURNING id INTO questaoComplementarId;

questaoId := (select q2.id from questao q2
where q2.questionario_id = questionarioId
and q2.nome_componente = 'BARREIRAS_IDENTIFICADAS');
insert into opcao_resposta (questao_id, ordem, nome, observacao, criado_em, criado_por, criado_rf)
values(questaoId, 4, 'Outras/Nenhuma', '', NOW(), 'SISTEMA', '0')
RETURNING id INTO opcaoRespostaId;

insert into opcao_questao_complementar (opcao_resposta_id, questao_complementar_id, criado_em, criado_por, criado_rf)
values (opcaoRespostaId, questaoComplementarId, NOW(), 'SISTEMA', '0');
end if;

questionarioId := (select id from questionario q
where q.tipo = 2 and q.nome like '%Plano AEE%');

update questao set nome = 'Possui assistência de AVE (Auxiliar de vida escolar)'
where id in (select q2.id from questao q2
where q2.questionario_id = questionarioId
and q2.id not in (select oqc.questao_complementar_id from opcao_questao_complementar oqc)
and q2.nome_componente = 'POSSUI_AVE'
order by q2.ordem);

update questao set nome = 'Possui assistência de estagiário na turma'
where id in (select q2.id from questao q2
where q2.questionario_id = questionarioId
and q2.id not in (select oqc.questao_complementar_id from opcao_questao_complementar oqc)
and q2.nome_componente = 'POSSUI_ESTAGIARIO_TURMA'
order by q2.ordem);

questaoIdExistente := (select q.id
from questao q
where q.questionario_id = questionarioId and q.nome_componente = 'AVALIACAO_REESTRUTURACAO_PLANO_BIMESTRE');
if (questaoIdExistente IS NULL) then
insert into questao(questionario_id, ordem, nome, observacao, obrigatorio, tipo, opcionais, criado_em, criado_por, criado_rf, nome_componente, dimensao)
values(questionarioId, 14, 'Registre aqui a avaliação e reestruturação do plano no bimestre', '', false, 2, '', NOW(), 'SISTEMA', '0', 'AVALIACAO_REESTRUTURACAO_PLANO_BIMESTRE', 12);
end if;
end $$;

Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ await ObterResponsavel(planoAEE.ResponsavelPaaiId.Value) :
}

private async Task<bool> PodeAtribuirResponsavel(PlanoAEE planoAEE, Usuario usuario, Turma turma)
=> (planoAEE.Situacao == SituacaoPlanoAEE.AtribuicaoPAAI || planoAEE.Situacao == SituacaoPlanoAEE.ParecerPAAI)
&& await EhCoordenadorCEFAI(usuario, turma);
=> planoAEE.Situacao.EhUmDosValores(SituacaoPlanoAEE.AtribuicaoPAAI, SituacaoPlanoAEE.ParecerPAAI, SituacaoPlanoAEE.Validado, SituacaoPlanoAEE.Expirado)
&& await EhCoordenadorCEFAI(usuario, turma);

private async Task<bool> EhCoordenadorCEFAI(Usuario usuarioLogado, Turma turma)
{
Expand All @@ -74,7 +74,7 @@ private async Task<bool> UsuarioTemFuncaoCEFAINaDRE(Usuario usuarioLogado, strin
}

private bool PodeEditarParecerPAAI(PlanoAEE planoAEE, Usuario usuario)
=> planoAEE.Situacao == SituacaoPlanoAEE.ParecerPAAI
=> planoAEE.Situacao.EhUmDosValores(SituacaoPlanoAEE.ParecerPAAI, SituacaoPlanoAEE.Validado, SituacaoPlanoAEE.Expirado)
&& (planoAEE.ResponsavelPaaiId.GetValueOrDefault() == usuario.Id);

private async Task<bool> PodeEditarParecerCP(PlanoAEE planoAEE, Usuario usuario, Turma turma)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using MediatR;
using Microsoft.Extensions.Configuration;
using SME.SGP.Dominio;
using SME.SGP.Dominio.Constantes;
using SME.SGP.Dominio.Enumerados;
using SME.SGP.Infra;
using System;
Expand Down Expand Up @@ -85,7 +86,7 @@ private string ObterSiglaNomeComponente(string codigo, bool sigla = false)
private async Task<IEnumerable<ComponenteCurricularDto>> VerificaComponentesUe(Ue ue)
{
var componentesUe = await mediator.Send(new ObterComponentesCurricularesEOLPorTurmaECodigoUeQuery(null, ue.CodigoUe));
var componentesNotificacao = new[] { "1060", "1061", "1322" };
var componentesNotificacao = new[] { "1060", "1061", ComponentesCurricularesConstants.CODIGO_PAP_RECUPERACAO_APRENDIZAGENS.ToString() };

return componentesUe.Where(a => componentesNotificacao.Contains(a.Codigo.ToString()));
}
Expand Down Expand Up @@ -113,7 +114,7 @@ private async Task<Guid> SolicitarRelatorioBimestral(int bimestre, Ue ue)
Modalidade = Modalidade.Fundamental,
CodigoDre = ue.Dre.CodigoDre,
CodigoUe = ue.CodigoUe,
ComponentesCurriculares = new List<string>() { "1060", "1061", "1322" },
ComponentesCurriculares = new List<string>() { "1060", "1061", ComponentesCurricularesConstants.CODIGO_PAP_RECUPERACAO_APRENDIZAGENS.ToString() },
TipoRelatorio = TipoRelatorioFaltasFrequencia.Ano,
Condicao = CondicoesRelatorioFaltasFrequencia.TodosEstudantes,
TipoFormatoRelatorio = TipoFormatoRelatorio.Pdf,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public AtribuirResponsavelPlanoAEECommandHandler(IMediator mediator, IRepositori

public async Task<bool> Handle(AtribuirResponsavelPlanoAEECommand request, CancellationToken cancellationToken)
{
request.PlanoAEE.Situacao = Dominio.Enumerados.SituacaoPlanoAEE.ParecerPAAI;
request.PlanoAEE.Situacao = request.PlanoAEE.ObterSituacaoAoAtribuirResponsavelPAAI();
request.PlanoAEE.ResponsavelPaaiId = await mediator.Send(new ObterUsuarioIdPorRfOuCriaQuery(request.ResponsavelRF));

return await SalvarGerarPendenciaPaai(request, request.PlanoAEE);
Expand Down Expand Up @@ -54,6 +54,9 @@ private async Task<bool> SalvarGerarPendenciaPaai(AtribuirResponsavelPlanoAEECom

private async Task VerificaGeracaoPendenciaPAAI(PlanoAEE planoAEE, Turma turma)
{
if (planoAEE.EhSituacaoExpiradoValidado())
return;

await ExcluirPendenciaCEFAI(planoAEE);

if (!await ParametroGeracaoPendenciaAtivo() || await AtribuidoAoMesmoUsuario(planoAEE))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,24 +34,16 @@ public async Task<bool> Handle(RemoverResponsavelPlanoAEECommand request, Cancel
if (turma.EhNulo())
throw new NegocioException(MensagemNegocioTurma.TURMA_NAO_ENCONTRADA);

planoAee.Situacao = Dominio.Enumerados.SituacaoPlanoAEE.AtribuicaoPAAI;
planoAee.Situacao = planoAee.ObterSituacaoAoRemoverResponsavelPAAI();

planoAee.ResponsavelPaaiId = null;

var pendenciaPlanoAEE = await mediator.Send(new ObterUltimaPendenciaPlanoAEEQuery(planoAee.Id));


unitOfWork.IniciarTransacao();

try
{
await repositorioPlanoAee.SalvarAsync(planoAee);

if (pendenciaPlanoAEE.NaoEhNulo())
await mediator.Send(new ExcluirPendenciaPlanoAEECommand(planoAee.Id));

if (await ParametroGeracaoPendenciaAtivo())
await mediator.Send(new GerarPendenciaValidacaoPlanoAEECommand(planoAee.Id, PerfilUsuario.CEFAI));

await VerificaGeracaoPendenciaCEFAI(planoAee);
unitOfWork.PersistirTransacao();
}
catch
Expand All @@ -62,7 +54,21 @@ public async Task<bool> Handle(RemoverResponsavelPlanoAEECommand request, Cancel

return planoAee.Id != 0;
}


private async Task VerificaGeracaoPendenciaCEFAI(PlanoAEE planoAEE)
{
if (planoAEE.EhSituacaoExpiradoValidado())
return;

var pendenciaPlanoAEE = await mediator.Send(new ObterUltimaPendenciaPlanoAEEQuery(planoAEE.Id));
if (pendenciaPlanoAEE.NaoEhNulo())
await mediator.Send(new ExcluirPendenciaPlanoAEECommand(planoAEE.Id));

if (await ParametroGeracaoPendenciaAtivo())
await mediator.Send(new GerarPendenciaValidacaoPlanoAEECommand(planoAEE.Id, PerfilUsuario.CEFAI));
}


private async Task<bool> ParametroGeracaoPendenciaAtivo()
{
var parametro = await mediator.Send(new ObterParametroSistemaPorTipoEAnoQuery(TipoParametroSistema.GerarPendenciasPlanoAEE, DateTime.Today.Year));
Expand Down
6 changes: 2 additions & 4 deletions src/SME.SGP.Aplicacao/Consultas/ConsultasDisciplina.cs
Original file line number Diff line number Diff line change
Expand Up @@ -215,10 +215,8 @@ private bool PossuiObjetivos(
ComponenteCurricularEol componenteEOL,
IEnumerable<ComponenteCurricularJurema> componentesCurricularesJurema)
{
const long PAP_RECUPERACAO_APRENDIZAGENS = 1322;
const long PAP_PROJETO_COLABORATIVO = 1770;

var componentesPAPs = new long[] { PAP_RECUPERACAO_APRENDIZAGENS, PAP_PROJETO_COLABORATIVO };

var componentesPAPs = ComponentesCurricularesConstants.IDS_COMPONENTES_CURRICULARES_PAP_NOVO.Select(i => (long)i).ToArray();

return turma.AnoLetivo >= anoInicioSgp
&& (turma.TipoTurma != TipoTurma.Programa || componentesPAPs.Contains(componenteEOL.Codigo))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class ObterInstrucoesModalQueryHandler : IRequestHandler<ObterInstrucoesM
{
public Task<string> Handle(ObterInstrucoesModalQuery request, CancellationToken cancellationToken)
{
var instruoesModal = @"<b>O preenchimento deste encaminhamento é exclusivo para o público da Educação Especial. Segundo as normativas do município, o Atendimento Educação Especializado (AEE) é um serviço a ser ofertado exclusivamente para Estudantes/Crianças nos seguintes casos:</b> <br/><br/><p>
var instruoesModal = @"<b>O preenchimento deste encaminhamento deve ocorrer a partir da observação do estudante e do estudo de caso. Este documento trata exclusivamente do público da Educação Especial. Segundo as normativas do município, o Atendimento Educação Especializado (AEE) é um serviço a ser ofertado exclusivamente para Estudantes/Crianças nos seguintes casos:</b> <br/><br/><p>
1 - Com Deficiência <br/>
2 - Com Transtornos Globais do Desenvolvimento (TGD) <br/>
3 - Com Altas Habilidades / Superdotação</p>";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Intrinsics.X86;
using System.Threading;
using System.Threading.Tasks;

Expand All @@ -22,7 +23,7 @@ public class ObterCodigosAlunosSinalizadosPrioridadeMapeamentoEstudanteQueryHand
private readonly IMediator mediator;
private readonly IRepositorioMapeamentoEstudante repositorioMapeamento;

private const string HIPOTESE_ESCRITA_ALFABETICO = "A";
private readonly string[] HIPOTESES_ESCRITA_NAO_ALFABETICAS = new string[] { "PS", "SSV", "SCV", "SA" };
private const string RESULTADO_ABAIXO_BASICO_PROVA_SP = "Abaixo do básico";

public ObterCodigosAlunosSinalizadosPrioridadeMapeamentoEstudanteQueryHandler(IRepositorioPlanoAEE repositorioPlanoAEE,
Expand Down Expand Up @@ -56,8 +57,7 @@ public async Task<AlunoSinalizadoPrioridadeMapeamentoEstudanteDto[]> Handle(Obte
{
var sondagem = await mediator.Send(new ObterSondagemLPAlunoQuery(turma.CodigoTurma, aluno.CodigoAluno));
var avaliacoesExternasProvaSP = await mediator.Send(new ObterAvaliacoesExternasProvaSPAlunoQuery(aluno.CodigoAluno, turma.AnoLetivo-1));
if (sondagem.ObterHipoteseEscrita(request.Bimestre) != HIPOTESE_ESCRITA_ALFABETICO
&& !string.IsNullOrEmpty(sondagem.ObterHipoteseEscrita(request.Bimestre)))
if (HIPOTESES_ESCRITA_NAO_ALFABETICAS.Contains(sondagem.ObterHipoteseEscrita(request.Bimestre)))
alunosSondagemInsuficiente.Add(aluno.CodigoAluno);
if (avaliacoesExternasProvaSP.Any(psp => psp.Nivel.ToUpper() == RESULTADO_ABAIXO_BASICO_PROVA_SP.ToUpper()))
alunosProvaSPInsuficiente.Add(aluno.CodigoAluno);
Expand Down
Loading
Loading