Example #1
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 #2
0
        private void AprovarUltimoNivelDeEventoDataPassada(long codigoDaNotificacao, long workflowId)
        {
            Evento evento = repositorioEvento.ObterPorWorkflowId(workflowId);

            if (evento == null)
            {
                throw new NegocioException("Não foi possível localizar o evento deste fluxo de aprovação.");
            }

            evento.AprovarWorkflow();
            repositorioEvento.Salvar(evento);

            NotificarCriadorEventoDataPassadaAprovado(evento, codigoDaNotificacao);
            NotificarDiretorUeEventoDataPassadaAprovado(evento, codigoDaNotificacao);
        }
Example #3
0
 public void AlterarRecorrenciaEventos(Evento evento, bool alterarRecorrenciaCompleta)
 {
     if (evento.EventoPaiId.HasValue && evento.EventoPaiId > 0 && alterarRecorrenciaCompleta)
     {
         IEnumerable <Evento> eventos = repositorioEvento.ObterEventosPorRecorrencia(evento.Id, evento.EventoPaiId.Value, evento.DataInicio);
         if (eventos != null && eventos.Any())
         {
             foreach (var eventoASerAlterado in eventos)
             {
                 var eventoAlterado = AlterarEventoDeRecorrencia(evento, eventoASerAlterado);
                 repositorioEvento.Salvar(eventoAlterado);
             }
         }
     }
 }
        public void Excluir(long[] idsEventos)
        {
            List <long> idsComErroAoExcluir = new List <long>();

            foreach (var idEvento in idsEventos)
            {
                try
                {
                    var evento = repositorioEvento.ObterPorId(idEvento);

                    if (evento.WorkflowAprovacaoId.HasValue)
                    {
                        servicoWorkflowAprovacao.ExcluirWorkflowNotificacoes(evento.WorkflowAprovacaoId.Value);
                    }

                    evento.Excluir();

                    repositorioEvento.Salvar(evento);
                }
                catch (Exception)
                {
                    idsComErroAoExcluir.Add(idEvento);
                }
            }

            if (idsComErroAoExcluir.Any())
            {
                throw new NegocioException($"Não foi possível excluir os eventos de ids {string.Join(",", idsComErroAoExcluir)}");
            }
        }
Example #5
0
        public void Excluir(long[] idsEventos)
        {
            List <long> idsComErroAoExcluir = new List <long>();

            foreach (var idEvento in idsEventos)
            {
                try
                {
                    var evento = repositorioEvento.ObterPorId(idEvento);

                    evento.Excluir();

                    repositorioEvento.Salvar(evento);
                }
                catch (Exception)
                {
                    idsComErroAoExcluir.Add(idEvento);
                }
            }

            if (idsComErroAoExcluir.Any())
            {
                throw new NegocioException($"Não foi possível excluir os eventos de ids {string.Join(",", idsComErroAoExcluir)}");
            }
        }
Example #6
0
        public async Task Excluir(long[] idsEventos)
        {
            List <long>    idsComErroAoExcluir       = new List <long>();
            IList <string> eventoSemPemissaoExclusao = new List <string>();

            foreach (var idEvento in idsEventos)
            {
                try
                {
                    var evento = repositorioEvento.ObterPorId(idEvento);
                    var existeComunicadoParaEvento = await repositorioComunicado.VerificaExistenciaComunicadoParaEvento(idEvento);

                    if (existeComunicadoParaEvento)
                    {
                        throw new NegocioException($"Existem comunicados vigentes vinculados para o evento ID: {idEvento}");
                    }

                    ValidacaoPermissaoEdicaoExclusaoPorPerfilUsuarioTipoEevento(evento);

                    if (evento.WorkflowAprovacaoId.HasValue)
                    {
                        await servicoWorkflowAprovacao.ExcluirWorkflowNotificacoes(evento.WorkflowAprovacaoId.Value);
                    }

                    evento.Excluir();

                    repositorioEvento.Salvar(evento);
                }
                catch (NegocioException nex)
                {
                    eventoSemPemissaoExclusao.Add(nex.Message);
                }
                catch (Exception)
                {
                    idsComErroAoExcluir.Add(idEvento);
                }
            }

            var mensagensErroRetorno = new StringBuilder();

            if (eventoSemPemissaoExclusao.Any())
            {
                mensagensErroRetorno.AppendLine($"Não foi permitida a exclusão do(s) evento(s): { string.Join(", ", eventoSemPemissaoExclusao) }");
            }

            if (idsComErroAoExcluir.Any())
            {
                mensagensErroRetorno.AppendLine($"Não foi possível excluir os eventos de ids {string.Join(",", idsComErroAoExcluir)}");
            }

            if (eventoSemPemissaoExclusao.Any() || idsComErroAoExcluir.Any())
            {
                throw new NegocioException(mensagensErroRetorno.ToString());
            }
        }
Example #7
0
        public async Task Salvar(Evento evento, bool dataConfirmada = false)
        {
            var tipoEvento = repositorioEventoTipo.ObterPorId(evento.TipoEventoId);

            if (tipoEvento == null)
            {
                throw new NegocioException("O tipo do evento deve ser informado.");
            }

            var tipoCalendario = repositorioTipoCalendario.ObterPorId(evento.TipoCalendarioId);

            if (tipoCalendario == null)
            {
                throw new NegocioException("Calendário não encontrado.");
            }
            evento.AdicionarTipoEvento(tipoEvento);

            evento.ValidaPeriodoEvento();

            var usuario = await servicoUsuario.ObterUsuarioLogado();

            usuario.PodeCriarEvento(evento);

            if (!evento.PermiteConcomitancia())
            {
                var existeOutroEventoNaMesmaData = repositorioEvento.ExisteEventoNaMesmaDataECalendario(evento.DataInicio, evento.TipoCalendarioId);
                if (existeOutroEventoNaMesmaData)
                {
                    throw new NegocioException("Não é permitido cadastrar um evento nesta data pois esse tipo de evento não permite concomitância.");
                }
            }

            var periodos = repositorioPeriodoEscolar.ObterPorTipoCalendario(evento.TipoCalendarioId);

            if (evento.DeveSerEmDiaLetivo())
            {
                evento.EstaNoPeriodoLetivo(periodos);
            }

            await VerificaParticularidadesSME(evento, usuario, periodos, dataConfirmada);

            repositorioEvento.Salvar(evento);
        }