public async Task <IEnumerable <string> > Handle( ObterResponsaveisPorGrupoCommand request, CancellationToken cancellationToken) { string filtroTipoCiclo = ""; string filtroEtapaEnsinoId = ""; string filtroTipoEscola = ""; var grupos = await _grupoComunicadoRepository.ObterPorIds(request.IdsGrupo); var tipoCiclo = grupos.Select(x => x.TipoCicloId).Distinct().Aggregate((i, j) => i + "," + j); var etapaEnsinoId = grupos.Select(x => x.EtapaEnsinoId).Distinct().Aggregate((i, j) => i + "," + j); var tipoEscola = grupos.Select(x => x.TipoEscolaId).Distinct().Aggregate((i, j) => i + "," + j); if (tipoCiclo != null) { filtroTipoCiclo = $" and se.cd_ciclo_ensino in ({tipoCiclo})"; } if (etapaEnsinoId != null) { filtroEtapaEnsinoId = $" and se.cd_etapa_ensino in ({etapaEnsinoId})"; } if (tipoEscola != null) { filtroTipoEscola = $" and esc.tp_escola in ({tipoEscola})"; } var where = filtroTipoCiclo + filtroEtapaEnsinoId + filtroTipoEscola; var responsaveisEol = await _repository.ObterResponsaveisPorGrupo(where); responsaveisEol.Distinct(); var usuariosAPP = await _usuarioRepository.ObterTodos(); return(responsaveisEol.Where(x => usuariosAPP.Contains(x)).ToList()); }