Exemplo n.º 1
0
        public static List <Usuario> ListByComum(int Cod_Comum, int Cod_Grupo = 0, string filtro = "", string status = "", int[] categoria_instrumento = null, Context cx = null)
        {
            if (cx == null)
            {
                cx = new Context();
            }

            string status_ativo   = (status == "Ativo" ? "and u.Ativo = 1" : "");
            string status_inativo = (status == "Inativo" ? "and (u.Ativo = 0 or u.Ativo is null)" : "");

            string filtro_oficializados = (filtro == "Oficializados" ? "and u.Oficializado = 1" : "");
            string filtro_instrutores   = (filtro == "Instrutores" ? "and u.Instrutor = 1" : "");
            string filtro_rjm           = (filtro == "RJM" ? "and u.RJM = 1" : "");
            string filtro_alunos        = (filtro == "Alunos" ? "and u.Aluno = 1" : "");

            string filtro_grupo       = (Cod_Grupo != 0 ? string.Format("and u.Cod_Usuario in (select Cod_Usuario from UsuarioGrupo where Cod_Grupo = {0})", Cod_Grupo) : "");
            string filtro_instrumento = (categoria_instrumento != null ? string.Format("and i.Cod_Categoria in ({0})", String.Join(',', categoria_instrumento)) : "");

            var list = cx.Query <Usuario>(
                string.Format(@"select
                        u.Cod_Usuario
                       ,u.Nome 
                       ,u.Email 
                       ,u.Telefone 
                       ,u.Endereco 
                       ,u.Aluno 
                       ,u.Instrutor 
                       ,u.Oficializado 
                       ,u.Admin
                       ,u.Dev
                       ,u.RJM
                       ,u.Ativo
                       ,u.Cod_Instrumento 
                       --,u.Cod_Grupo
                       ,u.Cod_Comum 
                       ,u.AvisoLido
                       ,u.Observacao
                       ,LEN(u.RecuperarSenha) as RecuperarSenha
                       --,g.Nome as Grupo 
                       ,i.Nome as Instrumento
                    from Usuario u
                    --left outer join Grupo g on g.Cod_Grupo = u.Cod_Grupo
                    left outer join Instrumento i on i.Cod_Instrumento = u.Cod_Instrumento 
                        where u.Cod_Comum = @Cod_Comum {0} {1} {2} {3} {4} {5} {6} {7}",
                              filtro_grupo,
                              status_ativo,
                              status_inativo,
                              filtro_oficializados,
                              filtro_instrutores,
                              filtro_rjm,
                              filtro_alunos,
                              filtro_instrumento)
                , new { Cod_Comum }).ToList();

            List <UsuarioGrupo> grupos = UsuarioGrupo.ListByUusarios(list.Select(e => e.Cod_Usuario).ToArray(), cx);

            foreach (var item in list)
            {
                item.Cod_Grupos = grupos.Where(e => e.Cod_Usuario == item.Cod_Usuario).Select(e => e.Cod_Grupo).ToArray();
                item.Grupos     = string.Join(", ", Grupo.ListIn(item.Cod_Grupos, Cod_Comum).Select(e => e.Nome).ToArray());
            }

            return(list);
        }