Пример #1
0
        public void Excluir(long id)
        {
            var aula = repositorio.ObterPorId(id);

            aula.Excluido = true;
            repositorio.Salvar(aula);
        }
Пример #2
0
        public async Task ExcluirPlanoDaAula(long aulaId)
        {
            var usuario = await servicoUsuario.ObterUsuarioLogado();

            var aula = repositorioAula.ObterPorId(aulaId);

            await VerificaSeProfessorPodePersistirTurmaDisciplina(usuario.CodigoRf, aula.TurmaId, aula.DisciplinaId, aula.DataAula, usuario);

            await repositorio.ExcluirPlanoDaAula(aulaId);
        }
        public async Task <AulaConsultaDto> BuscarPorId(long id)
        {
            var aula = repositorio.ObterPorId(id);

            if (aula == null)
            {
                throw new NegocioException($"Aula de id {id} não encontrada");
            }

            var usuarioLogado = await servicoUsuario.ObterUsuarioLogado();

            string disciplinaId = await ObterDisciplinaIdAulaEOL(usuarioLogado, aula, usuarioLogado.EhProfessorCj());

            return(MapearParaDto(aula, disciplinaId));
        }
        private async Task <bool> VerificarPlanoAnualExistente(long aulaId)
        {
            var usuario = await servicoUsuario.ObterUsuarioLogado();

            var aula = repositorioAula.ObterPorId(aulaId);

            if (aula == null)
            {
                throw new NegocioException("Aula não encontrada");
            }

            var periodoEscolar = consultasPeriodoEscolar.ObterPeriodoEscolarPorData(aula.TipoCalendarioId, aula.DataAula);

            if (periodoEscolar == null)
            {
                throw new NegocioException("Período escolar não encontrado");
            }

            var planoAnualId = await consultasPlanoAnual.ObterIdPlanoAnualPorAnoEscolaBimestreETurma(
                aula.DataAula.Year, aula.UeId, long.Parse(aula.TurmaId), periodoEscolar.Bimestre, long.Parse(aula.DisciplinaId));

            if (planoAnualId <= 0 && !usuario.EhProfessorCj())
            {
                return(false);
            }
            return(true);
        }
Пример #5
0
        public async Task <bool> Handle(ObterFrequenciaOuPlanoNaRecorrenciaQuery request, CancellationToken cancellationToken)
        {
            var turmaInfantil = await repositorioAula.ObterTurmaInfantilPorAula(request.AulaId);

            var existeRegistro = await ChecarFrequenciaPlanoAula(request.AulaId, turmaInfantil);

            if (!existeRegistro)
            {
                var aulaAtual        = repositorioAula.ObterPorId(request.AulaId);
                var aulasRecorrentes = await repositorioAula.ObterAulasRecorrencia(aulaAtual.AulaPaiId ?? aulaAtual.Id, request.AulaId);

                if (aulasRecorrentes != null)
                {
                    foreach (var aula in aulasRecorrentes)
                    {
                        existeRegistro = await ChecarFrequenciaPlanoAula(aula.Id, turmaInfantil);

                        if (existeRegistro)
                        {
                            break;
                        }
                    }
                }
            }

            return(existeRegistro);
        }
        public async Task <IEnumerable <DatasAulasDto> > Handle(ObterDatasAulasPorProfessorEComponenteQuery request, CancellationToken cancellationToken)
        {
            var turma = await ObterTurma(request.TurmaCodigo);

            var tipoCalendarioId = await ObterTipoCalendario(turma);

            var periodosEscolares = await ObterPeriodosEscolares(tipoCalendarioId);

            var usuarioLogado = await mediator.Send(new ObterUsuarioLogadoQuery());

            var datasAulas = ObterAulasNosPeriodos(periodosEscolares, turma.AnoLetivo, turma.CodigoTurma, request.ComponenteCurricularCodigo,
                                                   string.Empty, request.EhProfessorCj, request.EhProfessor);

            var aulas = new List <Aula>();

            datasAulas.ToList()
            .ForEach(da => aulas.Add(repositorioAula.ObterPorId(da.IdAula)));

            var aulasPermitidas = usuarioLogado
                                  .ObterAulasQuePodeVisualizar(aulas, new string[] { request.ComponenteCurricularCodigo })
                                  .Select(a => a.Id);

            return(datasAulas.Where(da => aulasPermitidas.Contains(da.IdAula)).GroupBy(g => g.Data)
                   .Select(x => new DatasAulasDto()
            {
                Data = x.Key,
                Aulas = x.OrderBy(a => a.AulaCJ).Select(a => new AulaSimplesDto()
                {
                    AulaId = a.IdAula,
                    AulaCJ = a.AulaCJ,
                    ProfessorRf = a.ProfessorRf,
                    CriadoPor = a.CriadoPor
                })
            }));
        }
Пример #7
0
        public async Task <string> Alterar(AulaDto dto, long id)
        {
            var usuario = await servicoUsuario.ObterUsuarioLogado();

            var aulaOrigem           = repositorioAula.ObterPorId(id);
            var aulaOrigemQuantidade = aulaOrigem.Quantidade;
            var aula = MapearDtoParaEntidade(dto, usuario.CodigoRf, usuario.EhProfessorCj(), aulaOrigem);

            return(await servicoAula.Salvar(aula, usuario, dto.RecorrenciaAula, aulaOrigemQuantidade));
        }
Пример #8
0
        private Aula ObterAula(long aulaId)
        {
            var aula = repositorioAula.ObterPorId(aulaId);

            if (aula == null)
            {
                throw new NegocioException("A aula informada não foi encontrada.");
            }

            return(aula);
        }
Пример #9
0
        public async Task <AulaConsultaDto> BuscarPorId(long id)
        {
            var aula = repositorio.ObterPorId(id);

            if (aula == null || aula.Excluido)
            {
                throw new NegocioException($"Aula de id {id} não encontrada");
            }

            if (aula.AulaPaiId.HasValue)
            {
                aula.AulaPai = await repositorio.ObterCompletoPorIdAsync(aula.AulaPaiId.Value);
            }

            var aberto = await AulaDentroPeriodo(aula);

            var usuarioLogado = await servicoUsuario.ObterUsuarioLogado();

            string disciplinaId = await ObterDisciplinaIdAulaEOL(usuarioLogado, aula, usuarioLogado.EhProfessorCj());

            return(MapearParaDto(aula, disciplinaId, aberto));
        }
        public async Task <FrequenciaDto> ObterListaFrequenciaPorAula(long aulaId)
        {
            var aula = repositorioAula.ObterPorId(aulaId);

            if (aula == null)
            {
                throw new NegocioException("Aula não encontrada.");
            }

            var alunosDaTurma = await servicoEOL.ObterAlunosPorTurma(aula.TurmaId, aula.DataAula.Year);

            if (alunosDaTurma == null || !alunosDaTurma.Any())
            {
                throw new NegocioException("Não foram encontrados alunos para a aula/turma informada.");
            }
            var turma = repositorioTurma.ObterPorId(aula.TurmaId);

            if (turma == null)
            {
                throw new NegocioException("Não foi encontrada uma turma com o id informado. Verifique se você possui abrangência para essa turma.");
            }
            FrequenciaDto registroFrequenciaDto = ObterRegistroFrequencia(aulaId, aula, turma);

            var ausencias = servicoFrequencia.ObterListaAusenciasPorAula(aulaId);

            if (ausencias == null)
            {
                ausencias = new List <RegistroAusenciaAluno>();
            }

            var bimestre = consultasPeriodoEscolar.ObterPeriodoEscolarPorData(aula.TipoCalendarioId, aula.DataAula);

            if (bimestre == null)
            {
                throw new NegocioException("Ocorreu um erro, esta aula está fora do período escolar.");
            }
            var parametroPercentualCritico = repositorioParametrosSistema.ObterValorPorTipoEAno(
                TipoParametroSistema.PercentualFrequenciaCritico,
                bimestre.PeriodoInicio.Year);

            if (parametroPercentualCritico == null)
            {
                throw new NegocioException("Parâmetro de percentual de frequência em nível crítico não encontrado contate a SME.");
            }
            var percentualCritico = int.Parse(parametroPercentualCritico);
            var percentualAlerta  = int.Parse(repositorioParametrosSistema.ObterValorPorTipoEAno(
                                                  TipoParametroSistema.PercentualFrequenciaAlerta,
                                                  bimestre.PeriodoInicio.Year));

            var disciplinaAula = servicoEOL.ObterDisciplinasPorIds(new long[] { Convert.ToInt64(aula.DisciplinaId) });

            if (disciplinaAula == null || disciplinaAula.ToList().Count <= 0)
            {
                throw new NegocioException("Disciplina da aula não encontrada");
            }

            foreach (var aluno in alunosDaTurma.Where(a => a.DeveMostrarNaChamada()))
            {
                // Apos o bimestre da inatividade o aluno não aparece mais na lista de frequencia
                if (aluno.EstaInativo() && (aluno.DataSituacao < bimestre.PeriodoInicio))
                {
                    continue;
                }

                var registroFrequenciaAluno = new RegistroFrequenciaAlunoDto
                {
                    CodigoAluno             = aluno.CodigoAluno,
                    NomeAluno               = aluno.NomeAluno,
                    NumeroAlunoChamada      = aluno.NumeroAlunoChamada,
                    CodigoSituacaoMatricula = aluno.CodigoSituacaoMatricula,
                    SituacaoMatricula       = aluno.SituacaoMatricula,
                    Desabilitado            = (aluno.EstaInativo() && (aula.DataAula.Date >= aluno.DataSituacao.Date)) || aula.EhDataSelecionadaFutura,
                };

                // Marcador visual da situação
                registroFrequenciaAluno.Marcador = servicoAluno.ObterMarcadorAluno(aluno, bimestre);

                // Indicativo de frequencia do aluno
                registroFrequenciaAluno.IndicativoFrequencia = ObterIndicativoFrequencia(aluno, aula.DisciplinaId, bimestre, percentualAlerta, percentualCritico);

                if (!disciplinaAula.FirstOrDefault().RegistraFrequencia)
                {
                    registroFrequenciaDto.ListaFrequencia.Add(registroFrequenciaAluno);
                    continue;
                }

                var ausenciasAluno = ausencias.Where(c => c.CodigoAluno == aluno.CodigoAluno);

                for (int numeroAula = 1; numeroAula <= aula.Quantidade; numeroAula++)
                {
                    registroFrequenciaAluno.Aulas.Add(new FrequenciaAulaDto
                    {
                        NumeroAula = numeroAula,
                        Compareceu = !ausenciasAluno.Any(c => c.NumeroAula == numeroAula)
                    });
                }

                registroFrequenciaDto.ListaFrequencia.Add(registroFrequenciaAluno);
            }

            registroFrequenciaDto.Desabilitado = registroFrequenciaDto.ListaFrequencia.All(c => c.Desabilitado) || aula.EhDataSelecionadaFutura;

            return(registroFrequenciaDto);
        }
Пример #11
0
        public async Task <FrequenciaDto> ObterListaFrequenciaPorAula(long aulaId, long?disciplinaId = null)
        {
            var aula = repositorioAula.ObterPorId(aulaId);

            if (aula == null)
            {
                throw new NegocioException("Aula não encontrada.");
            }



            var alunosDaTurma = await servicoEOL.ObterAlunosPorTurma(aula.TurmaId);

            if (alunosDaTurma == null || !alunosDaTurma.Any())
            {
                throw new NegocioException("Não foram encontrados alunos para a aula/turma informada.");
            }

            var turma = await repositorioTurma.ObterPorCodigo(aula.TurmaId);

            if (turma == null)
            {
                throw new NegocioException("Não foi encontrada uma turma com o id informado. Verifique se você possui abrangência para essa turma.");
            }

            FrequenciaDto registroFrequenciaDto = ObterRegistroFrequencia(aulaId, aula, turma);

            var ausencias = servicoFrequencia.ObterListaAusenciasPorAula(aulaId);

            if (ausencias == null)
            {
                ausencias = new List <RegistroAusenciaAluno>();
            }

            var bimestre = await consultasPeriodoEscolar.ObterPeriodoEscolarPorData(aula.TipoCalendarioId, aula.DataAula);

            if (bimestre == null)
            {
                throw new NegocioException("Ocorreu um erro, esta aula está fora do período escolar.");
            }


            registroFrequenciaDto.TemPeriodoAberto = await consultasTurma.TurmaEmPeriodoAberto(aula.TurmaId, DateTime.Today, bimestre.Bimestre);

            var parametroPercentualCritico = await repositorioParametrosSistema.ObterValorPorTipoEAno(
                TipoParametroSistema.PercentualFrequenciaCritico,
                bimestre.PeriodoInicio.Year);

            if (parametroPercentualCritico == null)
            {
                throw new NegocioException("Parâmetro de percentual de frequência em nível crítico não encontrado contate a SME.");
            }

            var percentualCritico = int.Parse(parametroPercentualCritico);
            var percentualAlerta  = int.Parse(await repositorioParametrosSistema.ObterValorPorTipoEAno(
                                                  TipoParametroSistema.PercentualFrequenciaAlerta,
                                                  bimestre.PeriodoInicio.Year));

            var disciplinaAula = await repositorioComponenteCurricular.ObterDisciplinasPorIds(new long[] { disciplinaId.HasValue?disciplinaId.Value : Convert.ToInt64(aula.DisciplinaId) });

            if (disciplinaAula == null || disciplinaAula.ToList().Count <= 0)
            {
                throw new NegocioException("Disciplina da aula não encontrada");
            }

            var anotacoesTurma = await mediator.Send(new ObterAlunosComAnotacaoNaAulaQuery(aulaId));

            foreach (var aluno in alunosDaTurma.Where(a => a.DeveMostrarNaChamada(aula.DataAula)).OrderBy(c => c.NomeAluno))
            {
                // Apos o bimestre da inatividade o aluno não aparece mais na lista de frequencia ou
                // se a matrícula foi ativada após a data da aula
                if ((aluno.EstaInativo(aula.DataAula) && aluno.DataSituacao < bimestre.PeriodoInicio) ||
                    (aluno.CodigoSituacaoMatricula == SituacaoMatriculaAluno.Ativo && aluno.DataSituacao > aula.DataAula))
                {
                    continue;
                }

                if (aula.DataAula < aluno.DataMatricula.Date)
                {
                    continue;
                }

                var registroFrequenciaAluno = new RegistroFrequenciaAlunoDto
                {
                    CodigoAluno             = aluno.CodigoAluno,
                    NomeAluno               = aluno.NomeAluno,
                    NumeroAlunoChamada      = aluno.NumeroAlunoChamada,
                    CodigoSituacaoMatricula = aluno.CodigoSituacaoMatricula,
                    SituacaoMatricula       = aluno.SituacaoMatricula,
                    DataSituacao            = aluno.DataSituacao,
                    DataNascimento          = aluno.DataNascimento,
                    Desabilitado            = aluno.EstaInativo(aula.DataAula) || aula.EhDataSelecionadaFutura,
                    PermiteAnotacao         = aluno.EstaAtivo(aula.DataAula),
                    PossuiAnotacao          = anotacoesTurma.Any(a => a == aluno.CodigoAluno),
                    NomeResponsavel         = aluno.NomeResponsavel,
                    TipoResponsavel         = ObterTipoResponsavel(aluno.TipoResponsavel),
                    CelularResponsavel      = aluno.CelularResponsavel,
                    DataAtualizacaoContato  = aluno.DataAtualizacaoContato
                };

                // Marcador visual da situação
                registroFrequenciaAluno.Marcador = servicoAluno.ObterMarcadorAluno(aluno, bimestre, turma.EhTurmaInfantil);

                // Indicativo de frequencia do aluno
                aluno.CodigoTurma = long.Parse(turma.CodigoTurma);
                registroFrequenciaAluno.IndicativoFrequencia = ObterIndicativoFrequencia(aluno, aula.DisciplinaId, bimestre, percentualAlerta, percentualCritico);

                if (!disciplinaAula.FirstOrDefault().RegistraFrequencia)
                {
                    registroFrequenciaDto.ListaFrequencia.Add(registroFrequenciaAluno);
                    continue;
                }

                var ausenciasAluno = ausencias.Where(c => c.CodigoAluno == aluno.CodigoAluno);

                for (int numeroAula = 1; numeroAula <= aula.Quantidade; numeroAula++)
                {
                    registroFrequenciaAluno.Aulas.Add(new FrequenciaAulaDto
                    {
                        NumeroAula = numeroAula,
                        Compareceu = !ausenciasAluno.Any(c => c.NumeroAula == numeroAula)
                    });
                }

                registroFrequenciaDto.ListaFrequencia.Add(registroFrequenciaAluno);
            }

            registroFrequenciaDto.Desabilitado = registroFrequenciaDto.ListaFrequencia.All(c => c.Desabilitado) || aula.EhDataSelecionadaFutura;

            return(registroFrequenciaDto);
        }
Пример #12
0
        public AulaConsultaDto BuscarPorId(long id)
        {
            var aula = repositorio.ObterPorId(id);

            return(MapearParaDto(aula));
        }