Beispiel #1
0
        private DataTable FiltrarRol(string nombreRol, string nombreFuncionalidad, string estado)
        {
            DataTable tabla_rol       = DAORol.obtenerTabla();
            DataTable tabla_func      = DAOFuncionalidad.obtenerPorRolTable(nombreRol);
            var       final_rol       = "";
            var       posFiltro       = true;
            var       filtrosBusqueda = new List <string>();

            if (nombreRol != "")
            {
                filtrosBusqueda.Add("nombreRol LIKE '%" + nombreRol + "%'");
            }
            if (estado != null)
            {
                if (estado == "Activo")
                {
                    filtrosBusqueda.Add("estado = 1");
                }
                else
                {
                    filtrosBusqueda.Add("estado = 0");
                }
            }

            foreach (var filtro in filtrosBusqueda)
            {
                if (!posFiltro)
                {
                    final_rol += " AND " + filtro;
                }
                else
                {
                    final_rol += filtro;
                    posFiltro  = false;
                }
            }
            //Rearmar
            bool noTengoFuncionalidad = true;

            if (tabla_rol != null)
            {
                if (nombreFuncionalidad != null && tabla_func != null)
                {
                    int i = 0;
                    while (i < tabla_rol.Rows.Count)
                    {
                        string rol = Convert.ToString(tabla_rol.Rows[i]["nombreRol"]);
                        foreach (DataRow row2 in tabla_func.Rows)
                        {
                            if (rol == Convert.ToString(row2["nombreRol"]))
                            {
                                if (Convert.ToString(row2["descripcion"]) == nombreFuncionalidad)
                                {
                                    noTengoFuncionalidad = false;
                                }
                            }
                        }
                        if (noTengoFuncionalidad)
                        {
                            tabla_rol.Rows.RemoveAt(i);
                        }
                        else
                        {
                            i++;
                        }
                        noTengoFuncionalidad = true;
                    }
                }
                tabla_rol.DefaultView.RowFilter = final_rol;
            }
            return(tabla_rol);
        }