Example #1
0
        private void CriarEventoFechamento(PeriodoFechamento fechamento)
        {
            if (fechamento.UeId > 0)
            {
                var tipoEvento = repositorioTipoEvento.ObterTipoEventoPorTipo(TipoEvento.FechamentoBimestre);
                if (tipoEvento == null)
                {
                    throw new NegocioException("Tipo de evento de fechamento de bimestre não encontrado na base de dados.");
                }

                foreach (var bimestre in fechamento.FechamentosBimestre)
                {
                    EventoFechamento fechamentoExistente = repositorioEventoFechamento.ObterPorIdFechamento(bimestre.Id);

                    if (fechamentoExistente != null)
                    {
                        AtualizaEventoDeFechamento(bimestre, fechamentoExistente);
                    }
                    else
                    {
                        CriaEventoDeFechamento(fechamento, tipoEvento, bimestre);
                    }
                }
            }
        }
Example #2
0
        private void AtualizaEventoDeFechamento(PeriodoFechamentoBimestre bimestre, EventoFechamento fechamentoExistente)
        {
            var eventoExistente = fechamentoExistente.Evento ?? repositorioEvento.ObterPorId(fechamentoExistente.EventoId);

            if (eventoExistente != null)
            {
                eventoExistente.DataInicio = bimestre.InicioDoFechamento;
                eventoExistente.DataFim    = bimestre.FinalDoFechamento;
                repositorioEvento.Salvar(eventoExistente);
            }
        }
Example #3
0
        private async Task AlterarBimestresPeriodosComHierarquiaInferior(PeriodoFechamento fechamento, bool somenteUe)
        {
            var listaPeriodosAlteracao = new List <PeriodoFechamentoBimestre>();

            // Carrega lista de Periodos a alterar
            foreach (var fechamentoBimestre in fechamento.FechamentosBimestre)
            {
                // Obter Lista de PeriodoFechamentoBimestre por Dre e PeriodoEscolar
                var periodosFechamentoBimestre =
                    await repositorioPeriodoFechamentoBimestre.ObterBimestreParaAlteracaoHierarquicaAsync(
                        fechamentoBimestre.PeriodoEscolarId,
                        fechamento.DreId,
                        fechamentoBimestre.InicioDoFechamento,
                        fechamentoBimestre.FinalDoFechamento);

                if (periodosFechamentoBimestre != null && periodosFechamentoBimestre.Any())
                {
                    listaPeriodosAlteracao.AddRange(periodosFechamentoBimestre);
                }
            }

            // Agrupa a lista em PeriodoEscolar (por UE)
            foreach (var periodosFechamentoBimestreUE in listaPeriodosAlteracao.GroupBy(a => a.PeriodoFechamentoId))
            {
                var periodoFechamento = listaPeriodosAlteracao.Select(a => a.PeriodoFechamento).FirstOrDefault(c => c.Id == periodosFechamentoBimestreUE.Key);

                // Atualiza os periodos bimestre alterados
                foreach (var periodoFechamentoBimestreUe in periodosFechamentoBimestreUE)
                {
                    try
                    {
                        var periodoFechamentoBimestreDre = fechamento.FechamentosBimestre.FirstOrDefault(c => c.PeriodoEscolarId == periodoFechamentoBimestreUe.PeriodoEscolarId);
                        if (periodoFechamentoBimestreDre != null)
                        {
                            AtualizaDatasInicioEFim(periodoFechamentoBimestreDre, periodoFechamentoBimestreUe);
                            await repositorioPeriodoFechamentoBimestre.SalvarAsync(periodoFechamentoBimestreUe);

                            EventoFechamento fechamentoExistente = repositorioEventoFechamento.ObterPorIdFechamento(periodoFechamentoBimestreUe.Id);
                            if (fechamentoExistente != null)
                            {
                                AtualizaEventoDeFechamento(periodoFechamentoBimestreUe, fechamentoExistente);
                            }
                        }
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }

                // Notifica Alteração dos Periodos
                if (periodoFechamento.UeId.HasValue)
                {
                    EnviaNotificacaoParaUe(periodosFechamentoBimestreUE, periodoFechamento.UeId.Value);
                }
                else
                {
                    EnviaNotificacaoParaDre(periodoFechamento.DreId.Value, periodosFechamentoBimestreUE);
                }
            }
        }