//[Fact] //public async void Deve_Obter_Por_Turma_Disciplina() //{ // // ACT // var planoAula = await consultasPlanoAula.ObterPlanoAulaPorAula(1); // // ASSERT // Assert.False(planoAula == null); // Assert.True(planoAula.ObjetivosAprendizagemAula.Any()); // Assert.True(planoAula.QtdAulas > 0); //} private void Setup() { // Plano Aula planoAula = new PlanoAula() { Id = 1, AulaId = 1, Descricao = "Teste plano aula", }; repositorioPlanoAula.Setup(a => a.ObterPlanoAulaPorAula(It.IsAny <long>())) .Returns(Task.FromResult(planoAula)); // Objetivos Aula objetivos = new List <ObjetivoAprendizagemAula>() { new ObjetivoAprendizagemAula() { PlanoAulaId = 1, ObjetivoAprendizagemId = 1, ObjetivoAprendizagem = new ObjetivoAprendizagem() { ComponenteCurricularId = 1, } } }; consultasObjetivosAprendizagemAula.Setup(a => a.ObterObjetivosPlanoAula(It.IsAny <long>())) .Returns(Task.FromResult(objetivos)); // Aula aula = new AulaConsultaDto() { Id = 1, DataAula = new DateTime(2019, 11, 1), DisciplinaId = "7", Quantidade = 3, UeId = "1", TurmaId = "1" }; consultasAula.Setup(a => a.BuscarPorId(It.IsAny <long>()).Result) .Returns(aula); // Plano anual var planoAnual = new PlanoAnualCompletoDto() { ObjetivosAprendizagem = new List <ObjetivoAprendizagemDto>() { new ObjetivoAprendizagemDto() { Id = 1, Ano = "2019", Codigo = "1", Descricao = "Objetivo 1", IdComponenteCurricular = 1 } } }; consultasPlanoAnual.Setup(a => a.ObterPorEscolaTurmaAnoEBimestre(It.IsAny <FiltroPlanoAnualDto>(), It.IsAny <bool>())) .Returns(Task.FromResult(planoAnual)); }
private PlanoAula MapearParaDominio(PlanoAulaDto planoDto, PlanoAula planoAula = null) { if (planoAula == null) { planoAula = new PlanoAula(); } planoAula.AulaId = planoDto.AulaId; planoAula.Descricao = planoDto.Descricao; planoAula.DesenvolvimentoAula = planoDto.DesenvolvimentoAula; planoAula.RecuperacaoAula = planoDto.RecuperacaoAula; planoAula.LicaoCasa = planoDto.LicaoCasa; return(planoAula); }
private PlanoAulaRetornoDto MapearParaDto(PlanoAula plano) => plano == null ? null : new PlanoAulaRetornoDto() { Id = plano.Id, Descricao = plano.Descricao, DesenvolvimentoAula = plano.DesenvolvimentoAula, RecuperacaoAula = plano.RecuperacaoAula, LicaoCasa = plano.LicaoCasa, AulaId = plano.AulaId, Migrado = plano.Migrado, CriadoEm = plano.CriadoEm, CriadoPor = plano.CriadoPor, CriadoRf = plano.CriadoRF, AlteradoEm = plano.AlteradoEm, AlteradoPor = plano.AlteradoPor, AlteradoRf = plano.AlteradoRF };
private async Task SalvarPlanoAula(PlanoAula planoAula, PlanoAulaDto planoAulaDto, long planoAnualId) { repositorio.Salvar(planoAula); // Salvar Objetivos await repositorioObjetivosAula.LimparObjetivosAula(planoAula.Id); if (planoAulaDto.ObjetivosAprendizagemJurema != null) { foreach (var objetivoJuremaId in planoAulaDto.ObjetivosAprendizagemJurema) { var objetivoPlanoAnualId = await consultasObjetivoAprendizagem .ObterIdPorObjetivoAprendizagemJurema(planoAnualId, objetivoJuremaId); if (objetivoPlanoAnualId <= 0) { objetivoPlanoAnualId = await SalvarObjetivoPlanoAnual(objetivoJuremaId, planoAnualId); } repositorioObjetivosAula.Salvar(new ObjetivoAprendizagemAula(planoAula.Id, objetivoPlanoAnualId)); } } }
public async Task <bool> Handle(SalvarPlanoAulaCommand request, CancellationToken cancellationToken) { try { var planoAulaDto = request.PlanoAula; var aula = await mediator.Send(new ObterAulaPorIdQuery(planoAulaDto.AulaId)); var turma = await mediator.Send(new ObterTurmaPorCodigoQuery(aula.TurmaId)); DisciplinaDto disciplinaDto = null; if (request.PlanoAula.ComponenteCurricularId.HasValue) { var componentesCurriculares = await mediator.Send(new ObterComponentesCurricularesPorIdsQuery(new long[] { request.PlanoAula.ComponenteCurricularId.Value })); disciplinaDto = componentesCurriculares.SingleOrDefault(); } var abrangenciaTurma = await consultasAbrangencia.ObterAbrangenciaTurma(aula.TurmaId, planoAulaDto.ConsideraHistorico); if (abrangenciaTurma == null) { throw new NegocioException("Usuario sem acesso a turma da respectiva aula"); } var usuario = await mediator.Send(new ObterUsuarioLogadoQuery()); await VerificaSeProfessorPodePersistirTurmaDisciplina(usuario.CodigoRf, aula.TurmaId, aula.DisciplinaId, aula.DataAula, usuario); PlanoAula planoAula = await mediator.Send(new ObterPlanoAulaPorAulaIdQuery(planoAulaDto.AulaId)); planoAula = MapearParaDominio(planoAulaDto, planoAula); var periodoEscolar = await mediator.Send(new ObterPeriodosEscolaresPorTipoCalendarioIdEDataQuery(aula.TipoCalendarioId, aula.DataAula.Date)); if (periodoEscolar == null) { throw new NegocioException("Não foi possível concluir o cadastro, pois não foi localizado o bimestre da aula."); } var planejamentoAnual = await mediator.Send( new ObterPlanejamentoAnualPorAnoEscolaBimestreETurmaQuery(turma.Id, periodoEscolar.Id, long.Parse(aula.DisciplinaId)) ); if ((planejamentoAnual?.Id <= 0 || planejamentoAnual == null) && periodoEscolar.TipoCalendario.AnoLetivo.Equals(DateTime.Now.Year) && !usuario.PerfilAtual.Equals(Perfis.PERFIL_CJ) && !(disciplinaDto != null && disciplinaDto.TerritorioSaber)) { throw new NegocioException("Não foi possível concluir o cadastro, pois não existe plano anual cadastrado"); } if (planoAulaDto.ObjetivosAprendizagemComponente == null || !planoAulaDto.ObjetivosAprendizagemComponente.Any() && !planoAula.Migrado) { var permitePlanoSemObjetivos = false; var possuiObjetivos = await mediator.Send(new VerificaPossuiObjetivosAprendizagemPorComponenteCurricularIdQuery(long.Parse(aula.DisciplinaId))); // Os seguintes componentes curriculares (disciplinas) não tem seleção de objetivos de aprendizagem // Libras, Sala de Leitura permitePlanoSemObjetivos = new string[] { "218", "1061" }.Contains(aula.DisciplinaId) || new[] { Modalidade.EJA, Modalidade.Medio }.Contains(abrangenciaTurma.Modalidade) || // EJA e Médio não obrigam seleção usuario.EhProfessorCj() || // Para professores substitutos (CJ) a seleção dos objetivos deve ser opcional periodoEscolar.TipoCalendario.AnoLetivo < DateTime.Now.Year || // Para anos anteriores não obrigatória seleção de objetivos !possuiObjetivos || // Caso a disciplina não possui vinculo com Jurema, os objetivos não devem ser exigidos abrangenciaTurma.Ano.Equals("0"); // Caso a turma for de educação física multisseriadas, os objetivos não devem ser exigidos; if (!permitePlanoSemObjetivos) { throw new NegocioException("A seleção de objetivos de aprendizagem é obrigatória para criação do plano de aula"); } } await repositorioPlanoAula.SalvarAsync(planoAula); await mediator.Send(new ExcluirPendenciaAulaCommand(planoAula.AulaId, Dominio.TipoPendencia.PlanoAula)); // Salvar Objetivos await repositorioObjetivosAula.LimparObjetivosAula(planoAula.Id); if (planoAulaDto.ObjetivosAprendizagemComponente != null) { foreach (var objetivoAprendizagem in planoAulaDto.ObjetivosAprendizagemComponente) { await repositorioObjetivosAula.SalvarAsync(new ObjetivoAprendizagemAula(planoAula.Id, objetivoAprendizagem.Id, objetivoAprendizagem.ComponenteCurricularId)); } } } catch (Exception ex) { unitOfWork.Rollback(); throw; } return(true); }
public async Task Salvar(PlanoAulaDto planoAulaDto, bool controlarTransacao = true) { var aula = repositorioAula.ObterPorId(planoAulaDto.AulaId); var abrangenciaTurma = await consultasAbrangencia.ObterAbrangenciaTurma(aula.TurmaId); if (abrangenciaTurma == null) { throw new NegocioException("Usuario sem acesso a turma da respectiva aula"); } var usuario = await servicoUsuario.ObterUsuarioLogado(); await VerificaSeProfessorPodePersistirTurmaDisciplina(usuario.CodigoRf, aula.TurmaId, aula.DisciplinaId, aula.DataAula, usuario); PlanoAula planoAula = await repositorio.ObterPlanoAulaPorAula(planoAulaDto.AulaId); planoAula = MapearParaDominio(planoAulaDto, planoAula); if (planoAulaDto.ObjetivosAprendizagemJurema == null || !planoAulaDto.ObjetivosAprendizagemJurema.Any() && !planoAula.Migrado) { var permitePlanoSemObjetivos = false; // Os seguintes componentes curriculares (disciplinas) não tem seleção de objetivos de aprendizagem // Libras, Sala de Leitura permitePlanoSemObjetivos = new string[] { "218", "1061" }.Contains(aula.DisciplinaId); // EJA e Médio não obrigam seleção if (!permitePlanoSemObjetivos) { permitePlanoSemObjetivos = new[] { Modalidade.EJA, Modalidade.Medio }.Contains(abrangenciaTurma.Modalidade); } // Para professores substitutos (CJ) a seleção dos objetivos deve ser opcional if (!permitePlanoSemObjetivos) { permitePlanoSemObjetivos = usuario.EhProfessorCj(); } // Caso a disciplina não possui vinculo com Jurema, os objetivos não devem ser exigidos if (!permitePlanoSemObjetivos) { permitePlanoSemObjetivos = !(consultasObjetivoAprendizagem.DisciplinaPossuiObjetivosDeAprendizagem(Convert.ToInt64(aula.DisciplinaId))); } if (!permitePlanoSemObjetivos) { throw new NegocioException("A seleção de objetivos de aprendizagem é obrigatória para criação do plano de aula"); } } var bimestre = (aula.DataAula.Month + 2) / 3; var planoAnualId = await consultasPlanoAnual.ObterIdPlanoAnualPorAnoEscolaBimestreETurma( aula.DataAula.Year, aula.UeId, long.Parse(aula.TurmaId), bimestre, long.Parse(aula.DisciplinaId)); if (planoAnualId <= 0 && !usuario.PerfilAtual.Equals(Perfis.PERFIL_CJ)) { throw new NegocioException("Não foi possível concluir o cadastro, pois não existe plano anual cadastrado"); } if (controlarTransacao) { using (var transacao = unitOfWork.IniciarTransacao()) { await SalvarPlanoAula(planoAula, planoAulaDto, planoAnualId); unitOfWork.PersistirTransacao(); } } else { await SalvarPlanoAula(planoAula, planoAulaDto, planoAnualId); } }