public void Excluir(long id) { var aula = repositorio.ObterPorId(id); aula.Excluido = true; repositorio.Salvar(aula); }
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); }
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 }) })); }
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)); }
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); }
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); }
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); }
public AulaConsultaDto BuscarPorId(long id) { var aula = repositorio.ObterPorId(id); return(MapearParaDto(aula)); }