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 rptPerfilUf_ItemDataBound(object sender, RepeaterItemEventArgs e) { var ufsUsuario = (DTOUsuarioUF)e.Item.DataItem; var rptUsuario = (Repeater)e.Item.FindControl("rptUsuario"); var queryUsuarios = new ManterUsuario().ObterTodos(); queryUsuarios = ufsUsuario.PerfisID.Any() ? queryUsuarios.Where(x => x.ListaPerfil.Any(p => ufsUsuario.PerfisID.Contains(p.Perfil.ID))) : queryUsuarios; queryUsuarios = ufsUsuario.NivelsOcupacionaisID.Any() ? queryUsuarios.Where(x => ufsUsuario.NivelsOcupacionaisID.Contains(x.NivelOcupacional.ID)) : queryUsuarios; queryUsuarios = ufsUsuario.IDUf > 0 ? queryUsuarios.Where(x => ufsUsuario.IDUf == x.UF.ID) : queryUsuarios; queryUsuarios = ufsUsuario.Usuario != null?queryUsuarios.Where(x => x.ID == ufsUsuario.Usuario.ID) : queryUsuarios; var resultado = queryUsuarios .OrderBy(x => x.Nome) .Select(x => new DTOUsuarioPerfil { ID = x.ID, Nome = x.Nome, CPF = x.CPF, Email = x.Email, NivelOcupacional = x.NivelOcupacional.Nome }).ToList(); rptUsuario.DataSource = resultado; rptUsuario.DataBind(); ChecarExibirItem("UF", e); var colspan = (HtmlTableCell)e.Item.FindControl("colspan"); if (!chkListaCamposVisiveis.Items.FindByValue("Nome").Selected) { colspan.ColSpan = colspan.ColSpan - 1; } if (!chkListaCamposVisiveis.Items.FindByValue("CPF").Selected) { colspan.ColSpan = colspan.ColSpan - 1; } if (!chkListaCamposVisiveis.Items.FindByValue("Email").Selected) { colspan.ColSpan = colspan.ColSpan - 1; } if (!chkListaCamposVisiveis.Items.FindByValue("NivelOcupacional").Selected) { colspan.ColSpan = colspan.ColSpan - 1; } if (!chkListaCamposVisiveis.Items.FindByValue("Perfil").Selected) { colspan.ColSpan = colspan.ColSpan - 1; } }
protected void btnMatricular_Click(object sender, EventArgs e) { var idsSolucaoEducacionalSelecionados = new List <int>(); var idsNivelOcupacionalSelecionados = new List <int>(); switch (rblEfetuar.SelectedValue) { case "SolucaoEducacional": idsSolucaoEducacionalSelecionados.Add(int.Parse(ddlSolucaoEducacional.SelectedValue)); ObterSelecionados(ref idsNivelOcupacionalSelecionados, ddlNivelOcupacional, cblNivelOcupacional); break; case "NivelOcupacional": idsNivelOcupacionalSelecionados.Add(int.Parse(ddlNivelOcupacional.SelectedValue)); ObterSelecionados(ref idsSolucaoEducacionalSelecionados, ddlSolucaoEducacional, cblSolucaoEducacional); break; } // Obter soluções obrigatórias filtradas pela seleção. var solucoesObrigatorias = new ManterSolucaoEducacional() .ObterObrigatoriosPorSolucaoEducacionalNiveisOcupacionais( idsSolucaoEducacionalSelecionados, idsNivelOcupacionalSelecionados); // Filtra as soluções pelas que possuam Ofertas e Turmas vigentes. var listaSolucoesObrigatorias = solucoesObrigatorias.Where( x => x.SolucaoEducacional.ListaOferta.Any( o => Helpers.Util.ObterVigente(o.DataInicioInscricoes, o.DataFimInscricoes) && o.ListaTurma.Any(t => Helpers.Util.ObterVigente(t.DataInicio, t.DataFinal)))).ToList(); // Obtém somente os usuários dos níveis ocupacionais selecionados. var usuariosTodosNiveis = new ManterUsuario().ObterPorNiveisOcupacionais(idsNivelOcupacionalSelecionados) .AsQueryable(); var usuarioLogado = new ManterUsuario().ObterUsuarioLogado(); // Filtrar os usuários pela UF do gestor logado, caso aplicável. if (usuarioLogado.IsGestor()) { usuariosTodosNiveis = usuariosTodosNiveis.Where(x => x.UF.ID == usuarioLogado.UF.ID); } if (listaSolucoesObrigatorias.Any()) { EfetuarMatriculas(listaSolucoesObrigatorias, usuariosTodosNiveis); WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, string.Format( "As matrículas estão sendo alteradas automaticamente, isto pode demorar, pois estão sendo efetuadas matrículas em {0} Soluções Educacionais, para usuários em {1} Níveis Ocupacionais.", idsSolucaoEducacionalSelecionados.Count(), idsNivelOcupacionalSelecionados.Count())); } else { WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Não foi encontrada nenhuma Solução Educacional obrigatória com alunos que precisam ser matrículados, de acordo com os filtros selecionados."); } }
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"); } }