private async Task ValidarAbrangenciaTurma(ComunicadoDto filtroDto) { foreach (var turma in filtroDto.Turmas) { var abrangenciaTurmas = await consultasAbrangencia.ObterAbrangenciaTurma(turma.CodigoTurma); if (abrangenciaTurmas == null) { throw new NegocioException($"Usuário não possui permissão para visualizar comunicados da Turma com codigo {turma.CodigoTurma}"); } } }
private async Task ValidarAbrangenciaTurma(ComunicadoInserirDto comunicadoDto) { foreach (var turma in comunicadoDto.Turmas) { var abrangenciaTurmas = await consultasAbrangencia.ObterAbrangenciaTurma(turma); if (abrangenciaTurmas == null) { throw new NegocioException($"Usuário não possui permissão para enviar comunicados para a Turma com codigo {turma}"); } } }
private async Task ValidarAbrangenciaTurma(SolicitarInclusaoComunicadoEscolaAquiCommand comunicado) { foreach (var turma in comunicado.Turmas) { var abrangenciaTurmas = await _consultasAbrangencia.ObterAbrangenciaTurma(turma); if (abrangenciaTurmas == null) { throw new NegocioException($"Usuário não possui permissão para enviar comunicados para a Turma com codigo {turma}"); } } }
private async Task <IEnumerable <AbrangenciaFiltroRetorno> > ObterTurmasAbrangencia(IEnumerable <string> turmasAulas, bool ehTurmaHistorico) { var turmasRetorno = new List <AbrangenciaFiltroRetorno>(); foreach (var turma in turmasAulas) { var turmaAbrangencia = await consultasAbrangencia.ObterAbrangenciaTurma(turma, ehTurmaHistorico); if (turmaAbrangencia != null) { turmasRetorno.Add(turmaAbrangencia); } } return(turmasRetorno); }
public async Task <NotaTipoValor> ObterNotaTipo(string turmaCodigo, DateTime data, bool consideraHistorico = false) { var turma = await consultasAbrangencia.ObterAbrangenciaTurma(turmaCodigo, consideraHistorico); if (turma == null) { throw new NegocioException("Não foi encontrada a turma informada"); } var ciclo = repositorioCiclo.ObterCicloPorAnoModalidade(turma.Ano, turma.Modalidade); if (ciclo == null) { throw new NegocioException("Não foi encontrado o ciclo da turma informada"); } return(repositorioNotaTipoValor.ObterPorCicloIdDataAvalicacao(ciclo.Id, data)); }
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); } }