public List <string> ObterDestinatarios(EnvioInforme envio) { if (envio.Usuario != null) { return new List <string> { envio.Usuario.Email } } ; var perfis = envio.Perfis.Select(x => x.ID).ToList(); var niveis = envio.NiveisOcupacionais.Select(x => x.ID).ToList(); var ufs = envio.Ufs.Select(x => x.ID).ToList(); var usuarios = new ManterUsuario().ObterTodos(); if (perfis.Any()) { usuarios = usuarios.Where(u => u.ListaPerfil.Any(up => perfis.Contains(up.ID))); } if (niveis.Any()) { usuarios = usuarios.Where(u => niveis.Contains(u.NivelOcupacional.ID)); } if (ufs.Any()) { usuarios = usuarios.Where(u => ufs.Contains(u.UF.ID)); } return(usuarios.Select(u => u.Email).Distinct().ToList()); } }
protected void btnPesquisar_Click(object sender, EventArgs e) { // Perfis selecionados var perfisSelecionados = ucMultiplosPerfil.RecuperarIdsSelecionados <int>(); // Niveis Ocupacionais selecionados var niveisOcupacionaisSelecionados = ucMultiplosNivelOcupacional.RecuperarIdsSelecionados <int>(); // Ufs selecionados var ufsSelecionados = ucMultiplosUF.RecuperarIdsSelecionados <int>(); //Usuario Selecionado var usuario = ucLupaUsuario.SelectedUser; var queryUsuarios = new ManterUsuario().ObterTodos(); queryUsuarios = perfisSelecionados.Any() ? queryUsuarios.Where(x => x.ListaPerfil.Any(p => perfisSelecionados.Contains(p.Perfil.ID))) : queryUsuarios; queryUsuarios = niveisOcupacionaisSelecionados.Any() ? queryUsuarios.Where(x => niveisOcupacionaisSelecionados.Contains(x.NivelOcupacional.ID)) : queryUsuarios; queryUsuarios = ufsSelecionados.Any() ? queryUsuarios.Where(x => ufsSelecionados.Contains(x.UF.ID)) : queryUsuarios; queryUsuarios = usuario != null?queryUsuarios.Where(x => x.ID == usuario.ID) : queryUsuarios; if (queryUsuarios.Count() > 0) { var resultado = queryUsuarios.Select(x => new { ID = x.UF.ID, Sigla = x.UF.Sigla }) .Distinct() .ToList() .OrderBy(x => x.ID) .Select(x => new DTOUsuarioUF { IDUf = x.ID, Sigla = x.Sigla, Usuario = usuario, PerfisID = perfisSelecionados.ToList(), NivelsOcupacionaisID = niveisOcupacionaisSelecionados.ToList() }).ToList(); rptPerfilUf.DataSource = resultado; rptPerfilUf.DataBind(); var relatorio = queryUsuarios.ToList().Select(x => new DTORelatorioDadosPessoais { UF = x.UF.Sigla, Nome = x.Nome, CPF = x.CPF, Email = x.Email, NivelOcupacional = x.NivelOcupacional.Nome, Perfil = String.Join("\n\r", x.ListaPerfil.Select(y => y.Perfil.Nome)) }).ToList(); Session.Add("dsRelatorio", relatorio); litContador.Text = queryUsuarios.Count().ToString(); // Converter os resultados em dados totalizadores. var totalizadores = new List <DTOTotalizador>(); totalizadores.Add(TotalizadorUtil.GetTotalizador(queryUsuarios.AsEnumerable(), "Totalizador", "ID", enumTotalizacaoRelatorio.Contar, false)); UF.Visible = chkListaCamposVisiveis.Items.FindByValue("UF").Selected; Nome.Visible = chkListaCamposVisiveis.Items.FindByValue("Nome").Selected; CPF.Visible = chkListaCamposVisiveis.Items.FindByValue("CPF").Selected; Email.Visible = chkListaCamposVisiveis.Items.FindByValue("Email").Selected; NivelOcupacional.Visible = chkListaCamposVisiveis.Items.FindByValue("NivelOcupacional").Selected; Perfil.Visible = chkListaCamposVisiveis.Items.FindByValue("Perfil").Selected; dvContador.Visible = true; pnlPerfilUsuario.Visible = true; componenteGeracaoRelatorio.Visible = true; } else { pnlPerfilUsuario.Visible = false; componenteGeracaoRelatorio.Visible = false; WebFormHelper.ExibirMensagem(enumTipoMensagem.Alerta, "Nenhuma Informação Encontrada"); } }