示例#1
0
        //[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
        };
示例#4
0
        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);
        }
示例#6
0
        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);
            }
        }