private async Task <bool> PodeEditarNotaOuConceitoPeriodoUsuario(Usuario usuarioLogado, PeriodoEscolar periodoEscolar, Turma turma, string codigoComponenteCurricular, DateTime data) { var usuarioPodeEditar = await servicoEOL.PodePersistirTurmaDisciplina(usuarioLogado.CodigoRf, turma.CodigoTurma, codigoComponenteCurricular, data); if (!usuarioPodeEditar) { return(false); } var periodoFechamento = await consultasPeriodoFechamento.ObterPeriodoFechamentoTurmaAsync(turma, periodoEscolar.Bimestre, periodoEscolar.Id); var reabertura = await repositorioFechamentoReabertura.ObterReaberturaFechamentoBimestrePorDataReferencia(periodoEscolar.Bimestre, DateTime.Today, periodoEscolar.TipoCalendarioId, turma.Ue.Dre.CodigoDre, turma.Ue.CodigoUe); var dentroPeriodo = (periodoFechamento != null && periodoFechamento.DataDentroPeriodo(DateTime.Today)) || (reabertura != null && reabertura.DataDentroPeriodo(DateTime.Now)); return(dentroPeriodo); }
public async Task <ConselhoClasseAlunoResumoDto> ObterConselhoClasseTurma(string turmaCodigo, string alunoCodigo, int bimestre = 0, bool ehFinal = false, bool consideraHistorico = false) { var turma = await ObterTurma(turmaCodigo); var ehAnoAnterior = turma.AnoLetivo != DateTime.Today.Year; if (bimestre == 0 && !ehFinal) { bimestre = await ObterBimestreAtual(turma); } var fechamentoTurma = await consultasFechamentoTurma.ObterPorTurmaCodigoBimestreAsync(turmaCodigo, bimestre); if (fechamentoTurma == null && !ehAnoAnterior) { throw new NegocioException("Fechamento da turma não localizado " + (!ehFinal && bimestre > 0 ? $"para o bimestre {bimestre}" : "")); } var conselhoClasse = fechamentoTurma != null ? await repositorioConselhoClasse.ObterPorFechamentoId(fechamentoTurma.Id): null; var periodoEscolarId = fechamentoTurma?.PeriodoEscolarId; if (periodoEscolarId == null) { var tipoCalendario = await repositorioTipoCalendario.BuscarPorAnoLetivoEModalidade(turma.AnoLetivo, turma.ModalidadeTipoCalendario, turma.Semestre); if (tipoCalendario == null) { throw new NegocioException("Tipo de calendário não encontrado"); } var periodoEscolar = await repositorioPeriodoEscolar.ObterPorTipoCalendarioEBimestreAsync(tipoCalendario.Id, bimestre); periodoEscolarId = periodoEscolar?.Id; } var bimestreFechamento = !ehFinal ? bimestre : (await ObterPeriodoUltimoBimestre(turma)).Bimestre; PeriodoFechamentoBimestre periodoFechamentoBimestre = await consultasPeriodoFechamento .ObterPeriodoFechamentoTurmaAsync(turma, bimestreFechamento, periodoEscolarId); var tipoNota = await ObterTipoNota(turma, periodoFechamentoBimestre, consideraHistorico); var mediaAprovacao = double.Parse(await repositorioParametrosSistema .ObterValorPorTipoEAno(TipoParametroSistema.MediaBimestre)); var conselhoClasseAluno = conselhoClasse != null ? await repositorioConselhoClasseAluno.ObterPorConselhoClasseAlunoCodigoAsync(conselhoClasse.Id, alunoCodigo) : null; return(new ConselhoClasseAlunoResumoDto() { FechamentoTurmaId = fechamentoTurma?.Id, ConselhoClasseId = conselhoClasse?.Id, ConselhoClasseAlunoId = conselhoClasseAluno?.Id, Bimestre = bimestre, PeriodoFechamentoInicio = periodoFechamentoBimestre?.InicioDoFechamento, PeriodoFechamentoFim = periodoFechamentoBimestre?.FinalDoFechamento, TipoNota = tipoNota, Media = mediaAprovacao, AnoLetivo = turma.AnoLetivo }); }