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); }
private void Salvar(PlanoAnualDto planoAnualDto, PlanoAnual planoAnual, BimestrePlanoAnualDto bimestrePlanoAnualDto) { planoAnualDto.Id = repositorioPlanoAnual.Salvar(planoAnual); if (!planoAnual.Migrado) { AjustarObjetivosAprendizagem(planoAnualDto, bimestrePlanoAnualDto); } }
private PlanoAnual ObterPlanoAnualSimplificado(PlanoAnualDto planoAnualDto, int bimestre) { return(repositorioPlanoAnual.ObterPlanoAnualSimplificadoPorAnoEscolaBimestreETurma(planoAnualDto.AnoLetivo.Value, planoAnualDto.EscolaId, planoAnualDto.TurmaId.Value, bimestre, planoAnualDto.ComponenteCurricularEolId)); }
private void AjustarObjetivosAprendizagem(PlanoAnualDto planoAnualDto, BimestrePlanoAnualDto bimestrePlanoAnualDto) { var objetivosAprendizagemPlanoAnual = repositorioObjetivoAprendizagemPlano.ObterObjetivosAprendizagemPorIdPlano(planoAnualDto.Id); if (objetivosAprendizagemPlanoAnual != null) { RemoverObjetivos(objetivosAprendizagemPlanoAnual, bimestrePlanoAnualDto); InserirObjetivos(planoAnualDto, objetivosAprendizagemPlanoAnual, bimestrePlanoAnualDto); } }
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(); } }
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); }
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 }); }
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); } } } }
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)); } }
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(); } }
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")); }
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); }
public IActionResult Post(PlanoAnualDto planoAnualDto, [FromServices] IComandosPlanoAnual comandosPlanoAnual) { comandosPlanoAnual.Salvar(planoAnualDto); return(Ok()); }
public async Task <IActionResult> Post(PlanoAnualDto planoAnualDto, [FromServices] IComandosPlanoAnual comandosPlanoAnual) { return(Ok(await comandosPlanoAnual.Salvar(planoAnualDto))); }
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"); } }