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"); } }
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"); }