public async Task Excluir(long[] ids)
        {
            var erros = new StringBuilder();

            var comunicados = ids.Select(id =>
            {
                var comunicado = repositorio.ObterPorId(id);
                if (comunicado == null)
                {
                    erros.Append($"<li>{id} - comunicado não encontrado</li>");
                }
                else
                {
                    if (comunicado.EventoId.HasValue)
                    {
                        var evento = repositorioEvento.ObterPorId(comunicado.EventoId.Value);
                        if (evento != null && !evento.Excluido)
                        {
                            erros.Append($"<li>{id} - {comunicado.Titulo} - Comunicado com evento vinculado</li>");
                        }
                    }
                }
                return(comunicado);
            });

            if (string.IsNullOrEmpty(erros.ToString()))
            {
                await servicoAcompanhamentoEscolar.ExcluirComunicado(ids);

                foreach (var comunicado in comunicados)
                {
                    try
                    {
                        await repositorioComunicadoGrupo.ExcluirPorIdComunicado(comunicado.Id);

                        await repositorioComunicadoAluno.RemoverTodosAlunosComunicado(comunicado.Id);

                        await repositorioComunicadoTurma.RemoverTodasTurmasComunicado(comunicado.Id);

                        comunicado.MarcarExcluido();

                        await repositorio.SalvarAsync(comunicado);
                    }
                    catch
                    {
                        erros.Append($"<li>{comunicado.Id} - {comunicado.Titulo}</li>");
                    }
                }
            }

            if (!string.IsNullOrEmpty(erros.ToString()))
            {
                throw new NegocioException($"<p>Os seguintes comunicados não puderam ser excluídos:</p><br/>{erros.ToString()} por favor, tente novamente");
            }
        }
Example #2
0
        public async Task <string> Handle(SolicitarExclusaoComunicadosEscolaAquiCommand request, CancellationToken cancellationToken)
        {
            var erros = new StringBuilder();

            var comunicados = request.Ids.Select(id =>
            {
                var comunicado = _repositorioComunicado.ObterPorId(id);
                if (comunicado == null)
                {
                    erros.Append($"<li>{id} - comunicado não encontrado</li>");
                }
                return(comunicado);
            });

            if (string.IsNullOrEmpty(erros.ToString()))
            {
                await _servicoAcompanhamentoEscolar.ExcluirComunicado(request.Ids);

                foreach (var comunicado in comunicados)
                {
                    try
                    {
                        await _repositorioComunicadoGrupo.ExcluirPorIdComunicado(comunicado.Id);

                        await _repositorioComunicadoAluno.RemoverTodosAlunosComunicado(comunicado.Id);

                        await _repositorioComunicadoTurma.RemoverTodasTurmasComunicado(comunicado.Id);

                        comunicado.MarcarExcluido();

                        await _repositorioComunicado.SalvarAsync(comunicado);
                    }
                    catch
                    {
                        erros.Append($"<li>{comunicado.Id} - {comunicado.Titulo}</li>");
                    }
                }
            }

            if (!string.IsNullOrEmpty(erros.ToString()))
            {
                throw new NegocioException($"<p>Os seguintes comunicados não puderam ser excluídos:</p><br/>{erros.ToString()} por favor, tente novamente");
            }

            return("Comunicaos excluídos com sucesso");
        }