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)}");
            }
        }
        private async Task ExcluirAula(Aula aula, Usuario usuario)
        {
            if (await repositorioAtividadeAvaliativa.VerificarSeExisteAvaliacao(aula.DataAula.Date, aula.UeId, aula.TurmaId, usuario.CodigoRf, aula.DisciplinaId))
            {
                throw new NegocioException("Aula com avaliação vinculada. Para excluir esta aula primeiro deverá ser excluída a avaliação.");
            }

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

            unitOfWork.IniciarTransacao();
            try
            {
                if (aula.WorkflowAprovacaoId.HasValue)
                {
                    await servicoWorkflowAprovacao.ExcluirWorkflowNotificacoes(aula.WorkflowAprovacaoId.Value);
                }

                await comandosNotificacaoAula.Excluir(aula.Id);

                await servicoFrequencia.ExcluirFrequenciaAula(aula.Id);

                await comandosPlanoAula.ExcluirPlanoDaAula(aula.Id);

                aula.Excluido = true;
                await repositorioAula.SalvarAsync(aula);

                unitOfWork.PersistirTransacao();
            }
            catch (Exception)
            {
                unitOfWork.Rollback();
                throw;
            }
        }
Beispiel #3
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());
            }
        }
 public async Task ExcluirAsync(long idWorkflowAprovacao)
 {
     await servicoWorkflowAprovacao.ExcluirWorkflowNotificacoes(idWorkflowAprovacao);
 }