Exemple #1
0
        public async Task <IEnumerable <PlanoAnualCompletoDto> > Salvar(PlanoAnualDto planoAnualDto)
        {
            var usuarioAtual = servicoUsuario.ObterUsuarioLogado().Result;

            if (string.IsNullOrWhiteSpace(usuarioAtual.CodigoRf))
            {
                throw new NegocioException("Não foi possível obter o RF do usuário.");
            }

            unitOfWork.IniciarTransacao();
            foreach (var bimestrePlanoAnual in planoAnualDto.Bimestres)
            {
                PlanoAnual planoAnual = await ObterPlanoAnualSimplificado(planoAnualDto, bimestrePlanoAnual.Bimestre.Value);

                if (planoAnual != null)
                {
                    if (!usuarioAtual.EhProfessorCj() && !await servicoUsuario.PodePersistirTurmaDisciplina(usuarioAtual.CodigoRf, planoAnualDto.TurmaId.ToString(), planoAnualDto.ComponenteCurricularEolId.ToString(), DateTime.Now))
                    {
                        throw new NegocioException("Você não pode fazer alterações ou inclusões nesta turma, disciplina e data.");
                    }
                }
                planoAnual = MapearParaDominio(planoAnualDto, planoAnual, bimestrePlanoAnual.Bimestre.Value, bimestrePlanoAnual.Descricao);
                Salvar(planoAnualDto, planoAnual, bimestrePlanoAnual);
            }
            unitOfWork.PersistirTransacao();

            var resposta = await consultasPlanoAnual.ObterPorUETurmaAnoEComponenteCurricular(planoAnualDto.EscolaId, planoAnualDto.TurmaId.ToString(), planoAnualDto.AnoLetivo.Value, planoAnualDto.ComponenteCurricularEolId);

            return(resposta);
        }
Exemple #2
0
 private void Salvar(PlanoAnualDto planoAnualDto, PlanoAnual planoAnual, BimestrePlanoAnualDto bimestrePlanoAnualDto)
 {
     planoAnualDto.Id = repositorioPlanoAnual.Salvar(planoAnual);
     if (!planoAnual.Migrado)
     {
         AjustarObjetivosAprendizagem(planoAnualDto, bimestrePlanoAnualDto);
     }
 }
Exemple #3
0
 private PlanoAnual ObterPlanoAnualSimplificado(PlanoAnualDto planoAnualDto, int bimestre)
 {
     return(repositorioPlanoAnual.ObterPlanoAnualSimplificadoPorAnoEscolaBimestreETurma(planoAnualDto.AnoLetivo.Value,
                                                                                        planoAnualDto.EscolaId,
                                                                                        planoAnualDto.TurmaId.Value,
                                                                                        bimestre,
                                                                                        planoAnualDto.ComponenteCurricularEolId));
 }
Exemple #4
0
        private void AjustarObjetivosAprendizagem(PlanoAnualDto planoAnualDto, BimestrePlanoAnualDto bimestrePlanoAnualDto)
        {
            var objetivosAprendizagemPlanoAnual = repositorioObjetivoAprendizagemPlano.ObterObjetivosAprendizagemPorIdPlano(planoAnualDto.Id);

            if (objetivosAprendizagemPlanoAnual != null)
            {
                RemoverObjetivos(objetivosAprendizagemPlanoAnual, bimestrePlanoAnualDto);
                InserirObjetivos(planoAnualDto, objetivosAprendizagemPlanoAnual, bimestrePlanoAnualDto);
            }
        }
Exemple #5
0
 public void Salvar(PlanoAnualDto planoAnualDto)
 {
     using (var transacao = unitOfWork.IniciarTransacao())
     {
         foreach (var bimestrePlanoAnual in planoAnualDto.Bimestres)
         {
             PlanoAnual planoAnual = ObterPlanoAnualSimplificado(planoAnualDto, bimestrePlanoAnual.Bimestre.Value);
             planoAnual = MapearParaDominio(planoAnualDto, planoAnual, bimestrePlanoAnual);
             Salvar(planoAnualDto, planoAnual, bimestrePlanoAnual);
         }
         unitOfWork.PersistirTransacao();
     }
 }
Exemple #6
0
 private PlanoAnual MapearParaDominio(PlanoAnualDto planoAnualDto, PlanoAnual planoAnual, BimestrePlanoAnualDto bimestrePlanoAnual)
 {
     if (planoAnual == null)
     {
         planoAnual = new PlanoAnual();
     }
     planoAnual.Ano       = planoAnualDto.AnoLetivo.Value;
     planoAnual.Bimestre  = bimestrePlanoAnual.Bimestre.Value;
     planoAnual.Descricao = bimestrePlanoAnual.Descricao;
     planoAnual.EscolaId  = planoAnualDto.EscolaId;
     planoAnual.TurmaId   = planoAnualDto.TurmaId.Value;
     planoAnual.ComponenteCurricularEolId = planoAnualDto.ComponenteCurricularEolId;
     return(planoAnual);
 }
 private PlanoAnual MapearParaDominio(PlanoAnualDto planoAnualDto, PlanoAnual planoAnual, int bimestre, string descricao, bool objetivosAprendizagemOpcionais)
 {
     if (planoAnual == null)
     {
         planoAnual = new PlanoAnual();
     }
     planoAnual.Ano       = planoAnualDto.AnoLetivo.Value;
     planoAnual.Bimestre  = bimestre;
     planoAnual.Descricao = descricao;
     planoAnual.EscolaId  = planoAnualDto.EscolaId;
     planoAnual.TurmaId   = planoAnualDto.TurmaId.Value;
     planoAnual.ComponenteCurricularEolId      = planoAnualDto.ComponenteCurricularEolId;
     planoAnual.ObjetivosAprendizagemOpcionais = objetivosAprendizagemOpcionais;
     return(planoAnual);
 }
Exemple #8
0
        private void SalvarObjetivoAprendizagem(PlanoAnualDto planoAnualDto,
                                                IEnumerable <ComponenteCurricular> componentesCurriculares,
                                                IEnumerable <ObjetivoAprendizagemDto> objetivosAprendizagem,
                                                ObjetivoAprendizagemSimplificadoDto objetivo)
        {
            var componenteEol = componentesCurriculares.FirstOrDefault(c => c.CodigoJurema == objetivo.IdComponenteCurricular);

            ValidarObjetivoPertenceAoComponenteCurricular(objetivosAprendizagem, objetivo, componenteEol);

            repositorioObjetivoAprendizagemPlano.Salvar(new ObjetivoAprendizagemPlano()
            {
                ObjetivoAprendizagemJuremaId = objetivo.Id,
                ComponenteCurricularId       = componenteEol.Id,
                PlanoId = planoAnualDto.Id
            });
        }
Exemple #9
0
        private void InserirObjetivos(PlanoAnualDto planoAnualDto, IEnumerable <ObjetivoAprendizagemPlano> objetivosAprendizagemPlanoAnual, BimestrePlanoAnualDto bimestrePlanoAnualDto)
        {
            if (bimestrePlanoAnualDto.ObjetivosAprendizagem != null && bimestrePlanoAnualDto.ObjetivosAprendizagem.Any())
            {
                var idsObjetivos = objetivosAprendizagemPlanoAnual?.Select(c => c.ObjetivoAprendizagemJuremaId);
                IEnumerable <ComponenteCurricular>    componentesCurriculares = ObterComponentesCurriculares();
                IEnumerable <ObjetivoAprendizagemDto> objetivosAprendizagem   = ObterObjetivosDeAprendizagem();

                foreach (var objetivo in bimestrePlanoAnualDto.ObjetivosAprendizagem)
                {
                    if (idsObjetivos != null && !idsObjetivos.Contains(objetivo.Id))
                    {
                        SalvarObjetivoAprendizagem(planoAnualDto, componentesCurriculares, objetivosAprendizagem, objetivo);
                    }
                }
            }
        }
Exemple #10
0
        public void DeveIncluirPlanoAnual()
        {
            try
            {
                _fixture._clientApi.DefaultRequestHeaders.Clear();

                _fixture._clientApi.DefaultRequestHeaders.Authorization =
                    new AuthenticationHeaderValue("Bearer", _fixture.GerarToken(new Permissao[] { Permissao.PA_I, Permissao.PA_C }));

                PlanoAnualDto planoAnualDto = CriarDtoPlanoAnual();

                var jsonParaPost = new StringContent(JsonConvert.SerializeObject(planoAnualDto), Encoding.UTF8, "application/json");

                var postResult = _fixture._clientApi.PostAsync("api/v1/planos/anual/", jsonParaPost).Result;

                Assert.True(postResult.IsSuccessStatusCode);
                var filtro = new FiltroPlanoAnualDto()
                {
                    AnoLetivo = 2019,
                    Bimestre  = 1,
                    EscolaId  = "095346",
                    TurmaId   = 2008187,
                    ComponenteCurricularEolId = 9
                };
                var filtroPlanoAnual = new StringContent(JsonConvert.SerializeObject(filtro), Encoding.UTF8, "application/json");

                var planoAnualCompletoResponse = _fixture._clientApi.PostAsync("api/v1/planos/anual/obter", filtroPlanoAnual).Result;
                if (planoAnualCompletoResponse.IsSuccessStatusCode)
                {
                    var planoAnualCompleto = JsonConvert.DeserializeObject <PlanoCicloCompletoDto>(planoAnualCompletoResponse.Content.ReadAsStringAsync().Result);
                    Assert.Contains(planoAnualDto.Bimestres, c => c.Descricao == planoAnualCompleto.Descricao);

                    var planoAnualExistenteResponse = _fixture._clientApi.PostAsync("api/v1/planos/anual/validar-existente", filtroPlanoAnual).Result;
                    Assert.True(bool.Parse(planoAnualExistenteResponse.Content.ReadAsStringAsync().Result));
                }
                else
                {
                    var erro = postResult.Content.ReadAsStringAsync().Result;
                    Assert.True(false, erro);
                }
            }
            catch (AggregateException ae)
            {
                throw new Exception("Erros: " + string.Join(",", ae.InnerExceptions));
            }
        }
Exemple #11
0
        public async Task Migrar(MigrarPlanoAnualDto migrarPlanoAnualDto)
        {
            var planoAnualDto = migrarPlanoAnualDto.PlanoAnual;

            using (var transacao = unitOfWork.IniciarTransacao())
            {
                foreach (var bimestrePlanoAnual in planoAnualDto.Bimestres)
                {
                    var planoAnualOrigem = ObterPlanoAnualSimplificado(planoAnualDto, bimestrePlanoAnual.Bimestre.Value);

                    if (planoAnualOrigem == null)
                    {
                        throw new NegocioException("Plano anual de origem não encontrado");
                    }

                    await ValidaTurmasProfessor(migrarPlanoAnualDto, planoAnualDto);

                    foreach (var turmaId in migrarPlanoAnualDto.IdsTurmasDestino)
                    {
                        var planoCopia = new PlanoAnualDto(
                            planoAnualDto.AnoLetivo,
                            planoAnualDto.Bimestres,
                            planoAnualDto.EscolaId,
                            planoAnualDto.Id,
                            planoAnualDto.TurmaId,
                            planoAnualDto.ComponenteCurricularEolId);

                        planoCopia.TurmaId = turmaId;

                        var planoAnual = ObterPlanoAnualSimplificado(planoCopia, bimestrePlanoAnual.Bimestre.Value);

                        if (planoAnual == null)
                        {
                            planoAnual = MapearParaDominio(planoCopia, planoAnual, bimestrePlanoAnual);
                        }

                        planoAnual.Descricao = planoAnualOrigem.Descricao;
                        Salvar(planoCopia, planoAnual, bimestrePlanoAnual);
                    }
                }

                unitOfWork.PersistirTransacao();
            }
        }
Exemple #12
0
        public void NaoDeveIncluirPlanoAnualEExibirMensagemErro()
        {
            _fixture._clientApi.DefaultRequestHeaders.Clear();

            _fixture._clientApi.DefaultRequestHeaders.Authorization =
                new AuthenticationHeaderValue("Bearer", _fixture.GerarToken(new Permissao[] { Permissao.PA_I, Permissao.PA_C }));

            PlanoAnualDto planoAnualDto = CriarDtoPlanoAnual();

            planoAnualDto.EscolaId = null;
            var jsonParaPost = new StringContent(JsonConvert.SerializeObject(planoAnualDto), Encoding.UTF8, "application/json");

            var postResult = _fixture._clientApi.PostAsync("api/v1/planos/anual/", jsonParaPost).Result;

            Assert.False(postResult.IsSuccessStatusCode);
            var jsonErro    = postResult.Content.ReadAsStringAsync().Result;
            var retornoBase = JsonConvert.DeserializeObject <RetornoBaseDto>(jsonErro);

            Assert.Contains(retornoBase.Mensagens, c => c.Equals("A escola deve ser informada"));
        }
Exemple #13
0
        public async Task Migrar(MigrarPlanoAnualDto migrarPlanoAnualDto)
        {
            var planoAnualDto = migrarPlanoAnualDto.PlanoAnual;
            var planoCopia    = new PlanoAnualDto(
                planoAnualDto.AnoLetivo,
                planoAnualDto.Bimestres,
                planoAnualDto.EscolaId,
                planoAnualDto.Id,
                planoAnualDto.TurmaId,
                planoAnualDto.ComponenteCurricularEolId);

            unitOfWork.IniciarTransacao();

            foreach (var bimestrePlanoAnual in migrarPlanoAnualDto.BimestresDestino.OrderBy(c => c))
            {
                var planoAnualOrigem = await ObterPlanoAnualSimplificado(planoAnualDto, bimestrePlanoAnual);

                if (planoAnualOrigem == null)
                {
                    throw new NegocioException("Plano anual de origem não encontrado");
                }

                var bimestreAtual = planoAnualDto.Bimestres.FirstOrDefault(c => c.Bimestre == bimestrePlanoAnual);
                foreach (var turmaId in migrarPlanoAnualDto.IdsTurmasDestino)
                {
                    planoCopia.TurmaId = turmaId;

                    var planoAnual = await ObterPlanoAnualSimplificado(planoCopia, bimestrePlanoAnual);

                    if (planoAnual == null)
                    {
                        planoAnual = MapearParaDominio(planoCopia, planoAnual, bimestrePlanoAnual, bimestreAtual.Descricao);
                    }

                    planoAnual.Descricao = planoAnualOrigem.Descricao;
                    Salvar(planoCopia, planoAnual, bimestreAtual);
                }
            }
            unitOfWork.PersistirTransacao();
        }
        public async Task <IEnumerable <PlanoAnualCompletoDto> > Salvar(PlanoAnualDto planoAnualDto)
        {
            var usuarioAtual = servicoUsuario.ObterUsuarioLogado().Result;

            if (string.IsNullOrWhiteSpace(usuarioAtual.CodigoRf))
            {
                throw new NegocioException("Não foi possível obter o RF do usuário.");
            }

            if (planoAnualDto.TurmaId.HasValue && !await consultasTurma.TurmaEmPeriodoAberto(planoAnualDto.TurmaId.Value.ToString(), DateTime.Today))
            {
                throw new NegocioException("Turma não esta em período aberto");
            }

            unitOfWork.IniciarTransacao();
            foreach (var bimestrePlanoAnual in planoAnualDto.Bimestres)
            {
                PlanoAnual planoAnual = ObterPlanoAnualSimplificado(planoAnualDto, bimestrePlanoAnual.Bimestre.Value);
                if (planoAnual != null)
                {
                    var podePersistir = await servicoUsuario.PodePersistirTurmaDisciplina(usuarioAtual.CodigoRf, planoAnualDto.TurmaId.ToString(), planoAnualDto.ComponenteCurricularEolId.ToString(), DateTime.Now);

                    if (usuarioAtual.PerfilAtual == Perfis.PERFIL_PROFESSOR && !podePersistir)
                    {
                        throw new NegocioException("Você não pode fazer alterações ou inclusões nesta turma, disciplina e data.");
                    }
                }
                planoAnual = MapearParaDominio(planoAnualDto, planoAnual, bimestrePlanoAnual.Bimestre.Value, bimestrePlanoAnual.Descricao, bimestrePlanoAnual.ObjetivosAprendizagemOpcionais);
                Salvar(planoAnualDto, planoAnual, bimestrePlanoAnual);
            }
            unitOfWork.PersistirTransacao();

            var resposta = await consultasPlanoAnual.ObterPorUETurmaAnoEComponenteCurricular(planoAnualDto.EscolaId, planoAnualDto.TurmaId.ToString(), planoAnualDto.AnoLetivo.Value, planoAnualDto.ComponenteCurricularEolId);

            return(resposta);
        }
Exemple #15
0
 public IActionResult Post(PlanoAnualDto planoAnualDto, [FromServices] IComandosPlanoAnual comandosPlanoAnual)
 {
     comandosPlanoAnual.Salvar(planoAnualDto);
     return(Ok());
 }
Exemple #16
0
 public async Task <IActionResult> Post(PlanoAnualDto planoAnualDto, [FromServices] IComandosPlanoAnual comandosPlanoAnual)
 {
     return(Ok(await comandosPlanoAnual.Salvar(planoAnualDto)));
 }
Exemple #17
0
        private async Task ValidaTurmasProfessor(MigrarPlanoAnualDto migrarPlanoAnualDto, PlanoAnualDto planoAnualDto)
        {
            var turmasAtribuidasAoProfessor = await consultasProfessor.ObterTurmasAtribuidasAoProfessorPorEscolaEAnoLetivo(migrarPlanoAnualDto.RFProfessor, planoAnualDto.EscolaId, planoAnualDto.AnoLetivo.Value);

            var idsTurmasProfessor = turmasAtribuidasAoProfessor?.Select(c => c.CodigoTurma).ToList();

            if (idsTurmasProfessor == null || migrarPlanoAnualDto.IdsTurmasDestino.Any(c => !idsTurmasProfessor.Contains(c)))
            {
                throw new NegocioException("Somente é possível migrar o plano anual para turmas atribuidas ao professor");
            }
        }