public async Task <IEnumerable <EntidadeBase> > Salvar(PlanoAnualTerritorioSaberDto planoAnualTerritorioSaberDto)
        {
            Validar(planoAnualTerritorioSaberDto);

            var listaAuditoria = new List <EntidadeBase>();

            unitOfWork.IniciarTransacao();

            var usuarioAtual = servicoUsuario.ObterUsuarioLogado().Result;

            if (string.IsNullOrWhiteSpace(usuarioAtual.CodigoRf))
            {
                throw new NegocioException("Não foi possível obter o RF do usuário.");
            }
            foreach (var bimestrePlanoAnual in planoAnualTerritorioSaberDto.Bimestres)
            {
                PlanoAnualTerritorioSaber planoAnualTerritorioSaber = await ObterPlanoAnualTerritorioSaberSimplificado(planoAnualTerritorioSaberDto, bimestrePlanoAnual.Bimestre.Value);

                if (planoAnualTerritorioSaber != null)
                {
                    if (usuarioAtual.PerfilAtual == Perfis.PERFIL_PROFESSOR && !servicoUsuario.PodePersistirTurmaDisciplina(usuarioAtual.CodigoRf, planoAnualTerritorioSaberDto.TurmaId.ToString(), planoAnualTerritorioSaberDto.TerritorioExperienciaId.ToString(), DateTime.Now).Result)
                    {
                        throw new NegocioException("Você não pode fazer alterações ou inclusões nesta turma, disciplina e data.");
                    }
                }
                planoAnualTerritorioSaber = MapearParaDominio(planoAnualTerritorioSaberDto, planoAnualTerritorioSaber, bimestrePlanoAnual.Bimestre.Value, bimestrePlanoAnual.Desenvolvimento, bimestrePlanoAnual.Reflexao);
                repositorioPlanoAnualTerritorioSaber.Salvar(planoAnualTerritorioSaber);

                listaAuditoria.Add(planoAnualTerritorioSaber);
            }

            unitOfWork.PersistirTransacao();

            return(listaAuditoria);
        }
Пример #2
0
        public async Task <IActionResult> Post(PlanoAnualTerritorioSaberDto planoAnualTerritorioSaberDto, [FromServices] IComandosPlanoAnualTerritorioSaber comandosPlanoAnualTerritorioSaber)
        {
            var resultado = await comandosPlanoAnualTerritorioSaber.Salvar(planoAnualTerritorioSaberDto);

            if (planoAnualTerritorioSaberDto.Id == default(int))
            {
                return(Ok());
            }

            return(Ok(resultado));
        }
        private void Validar(PlanoAnualTerritorioSaberDto planoAnualTerritorioSaberDto)
        {
            var bimestresDescricaoVazia = planoAnualTerritorioSaberDto.Bimestres.Where(b =>
                                                                                       string.IsNullOrEmpty(b.Desenvolvimento) && string.IsNullOrEmpty(b.Reflexao));

            if (bimestresDescricaoVazia.Any())
            {
                throw new NegocioException($@"É necessário preencher o desenvolvimento e/ou reflexão do 
                                            {string.Join(", ", bimestresDescricaoVazia.Select(b => $"{b.Bimestre}º"))} bimestre");
            }
        }
 private PlanoAnualTerritorioSaber MapearParaDominio(PlanoAnualTerritorioSaberDto planoAnualTerritorioSaberDto, PlanoAnualTerritorioSaber planoAnualTerritorioSaber, int bimestre, string desenvolvimento, string reflexao)
 {
     if (planoAnualTerritorioSaber == null)
     {
         planoAnualTerritorioSaber = new PlanoAnualTerritorioSaber();
     }
     planoAnualTerritorioSaber.Ano                     = planoAnualTerritorioSaberDto.AnoLetivo.Value;
     planoAnualTerritorioSaber.Bimestre                = bimestre;
     planoAnualTerritorioSaber.Reflexao                = reflexao ?? string.Empty;
     planoAnualTerritorioSaber.Desenvolvimento         = desenvolvimento ?? string.Empty;
     planoAnualTerritorioSaber.EscolaId                = planoAnualTerritorioSaberDto.EscolaId;
     planoAnualTerritorioSaber.TurmaId                 = planoAnualTerritorioSaberDto.TurmaId.Value;
     planoAnualTerritorioSaber.TerritorioExperienciaId = planoAnualTerritorioSaberDto.TerritorioExperienciaId;
     return(planoAnualTerritorioSaber);
 }
Пример #5
0
        public void NaoDeveIncluirPlanoAnualTerritorioSaberEExibirMensagemErro()
        {
            _fixture._clientApi.DefaultRequestHeaders.Clear();

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

            PlanoAnualTerritorioSaberDto planoAnualTerritorioSaberDto = CriarDtoPlanoAnualTerritorioSaber();

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

            var postResult = _fixture._clientApi.PostAsync("api/v1/planos/anual/territorio-saber/", 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"));
        }
 private async Task <PlanoAnualTerritorioSaber> ObterPlanoAnualTerritorioSaberSimplificado(PlanoAnualTerritorioSaberDto planoAnualTerritorioSaberDto, int bimestre)
 {
     return(await repositorioPlanoAnualTerritorioSaber.ObterPlanoAnualTerritorioSaberSimplificadoPorAnoEscolaBimestreETurma(planoAnualTerritorioSaberDto.AnoLetivo.Value,
                                                                                                                            planoAnualTerritorioSaberDto.EscolaId,
                                                                                                                            planoAnualTerritorioSaberDto.TurmaId.Value,
                                                                                                                            bimestre,
                                                                                                                            planoAnualTerritorioSaberDto.TerritorioExperienciaId));
 }