//public List<PermisoComponente> ObtenerPermisosHijos(int idPermiso) //{ // List<PermisoComponente> lstPermisos = new List<PermisoComponente>(); // var pars = new IDbDataParameter[1]; // pars[0] = _accesoBaseDeDatos.CrearParametro("@IdPermiso", idPermiso); // string query = @"SELECT perper.IdHijo as Id, (SELECT Descripcion FROM Permiso pe WHERE pe.Id = perper.IdHijo) as Descripcion // FROM Permiso per // LEFT JOIN PermisoPermiso perper ON ( perper.IdPadre = per.Id ) // WHERE per.Id = @IdPermiso"; // var dtPermisos = _accesoBaseDeDatos.Seleccionar(query, pars); // if (dtPermisos.Rows.Count == 0) // return null; // foreach (DataRow row in dtPermisos.Rows) // { // var aPermiso = new BE.Composite.Permiso // { // Id = Convert.ToInt32(row["Id"]), // Descripcion = row["Descripcion"].ToString().Trim(), // }; // lstPermisos.Add(aPermiso); // } // return lstPermisos; //} //public int ObtenerIdPadre(int idPermiso) //{ // var pars = new IDbDataParameter[1]; // pars[0] = _accesoBaseDeDatos.CrearParametro("@IdPermiso", idPermiso); // string query = @" SELECT IdPadre // FROM PermisoPermiso per // WHERE per.IdHijo = 5 = @IdPermiso "; // var dtPerfil = _accesoBaseDeDatos.Seleccionar(query, pars); // if (dtPerfil.Rows.Count == 0) // return -1; // foreach (DataRow row in dtPerfil.Rows) // { // lstPermisos = ObtenerPermisos(row["Id"].ToString()); // } // return lstPermisos; //} //public bool IsInRole(int id) //{ // //var lista = GetAll(string.Empty); // var c = GetComponent(id, lista); // return c != null; //} public List <PermisoComponente> ObtenerPermisosHijos(int idPermiso) { List <PermisoComponente> lstPermisos = new List <PermisoComponente>(); var pars = new IDbDataParameter[1]; pars[0] = _accesoBaseDeDatos.CrearParametro("@IdPermiso", idPermiso); string query = @"SELECT perper.IdHijo as Id, (SELECT Descripcion FROM Permiso pe WHERE pe.Id = perper.IdHijo) as Descripcion FROM Permiso per LEFT JOIN PermisoPermiso perper ON ( perper.IdPadre = per.Id ) WHERE per.Id = @IdPermiso"; var dtPermisos = _accesoBaseDeDatos.Seleccionar(query, pars); if (dtPermisos.Rows.Count == 0) { return(null); } foreach (DataRow row in dtPermisos.Rows) { var aPermiso = new BE.Composite.Permiso { Id = Convert.ToInt32(row["Id"]), Descripcion = row["Descripcion"].ToString().Trim(), }; lstPermisos.Add(aPermiso); } return(lstPermisos); }
/// <summary> /// Obtiene un Permiso por Id de Permiso. /// </summary> /// <param name="idPermiso">Nombre del Permiso.</param> /// <returns></returns> public BE.Composite.Permiso ObtenerPermisoPorId(int idPermiso) { var dtPermiso = _accesoBaseDeDatos.Seleccionar(new BE.Composite.Permiso() { Id = idPermiso }, true); if (dtPermiso.Rows.Count == 0) { return(null); } var row = dtPermiso.Rows[0]; var aPermiso = new BE.Composite.Permiso { Id = Convert.ToInt32(row["Id"]), Descripcion = row["Descripcion"].ToString().Trim(), }; //var dtPerfil = _accesoBaseDeDatos.Seleccionar(new BE.Permiso() { NombrePermiso = objPermiso, Activo = null }); return(aPermiso); }
public List <PermisoComponente> ObtenerPermisos() { try { var lstPermisos = new List <PermisoComponente>(); string query = ""; query = $@"with Recursivo as ( select sp2.IdPadre, sp2.IdHijo from PermisoPermiso SP2 where sp2.IdPadre is null UNION ALL select sp.IdPadre, sp.IdHijo from PermisoPermiso sp inner join Recursivo r on r.IdHijo = sp.IdPadre ) select r.IdPadre, r.IdHijo, p.Id, p.Descripcion, p.EsPermiso from recursivo r inner join Permiso p on (r.IdHijo = p.Id) "; var dtPermisos = _accesoBaseDeDatos.Seleccionar(query, null); if (dtPermisos.Rows.Count == 0) { return(null); } foreach (DataRow row in dtPermisos.Rows) { int idPadre = 0; if (row["IdPadre"] != DBNull.Value) { idPadre = Convert.ToInt32(row["IdPadre"]); } var id = Convert.ToInt32(row["Id"]); var descripcion = row["Descripcion"].ToString().Trim(); var esPermiso = Convert.ToBoolean(row["EsPermiso"].ToString().Trim()); PermisoComponente componente; if (!esPermiso) { componente = new GrupoPermiso(); } else { componente = new BE.Composite.Permiso(); } componente.Id = id; componente.Descripcion = descripcion; var padre = ObtenerComponente(idPadre, lstPermisos); if (padre == null) { lstPermisos.Add(componente); } else { padre.Agregar(componente); } } return(lstPermisos); } catch (Exception e) { Console.WriteLine(e); throw; } }
//private List<PermisoComponente> ObtenerPermisos(string idPermiso) //{ // try // { // var lstPermisos = new List<PermisoComponente>(); // var pars = new IDbDataParameter[1]; // string query = ""; // if (!String.IsNullOrEmpty(idPermiso)) // { // var where = idPermiso; // pars[0] = _accesoBaseDeDatos.CrearParametro("@Condicion", Convert.ToInt32(where)); // //query = $@"with Recursivo as ( select sp2.IdPadre, sp2.IdHijo // // from PermisoPermiso SP2 // // where sp2.IdPadre = @Condicion // // UNION ALL // // select sp.IdPadre, sp.IdHijo // // from PermisoPermiso sp // // inner join Recursivo r on r.IdHijo = sp.IdPadre // // ) // // select r.IdPadre, r.IdHijo, p.Id, p.Descripcion, p.EsPermiso // // from recursivo r // // inner join Permiso p on (r.IdHijo = p.Id) // // "; // query = $@"with Recursivo as ( select sp2.IdPadre, sp2.IdHijo // from PermisoPermiso SP2 // where sp2.IdPadre = @Condicion // UNION ALL // select sp.IdPadre, sp.IdHijo // from PermisoPermiso sp // inner join Recursivo r on r.IdHijo = sp.IdPadre // ) // select perper.IdPadre, perper.IdHijo, p.Id, p.Descripcion, p.EsPermiso // from PermisoPermiso perper // inner join Permiso p on (perper.IdHijo = p.Id) // where p.Id = @Condicion // union all // select r.IdPadre, r.IdHijo, p.Id, p.Descripcion, p.EsPermiso // from recursivo r // inner join Permiso p on (r.IdHijo = p.Id) // "; // } // else // { // pars = null; // query = $@"with Recursivo as ( select sp2.IdPadre, sp2.IdHijo // from PermisoPermiso SP2 // where sp2.IdPadre is null // UNION ALL // select sp.IdPadre, sp.IdHijo // from PermisoPermiso sp // inner join Recursivo r on r.IdHijo = sp.IdPadre // ) // select r.IdPadre, r.IdHijo, p.Id, p.Descripcion, p.EsPermiso // from recursivo r // inner join Permiso p on (r.IdHijo = p.Id) // "; // } // var dtPermisos = _accesoBaseDeDatos.Seleccionar(query, pars); // if (dtPermisos.Rows.Count == 0) // return null; // foreach (DataRow row in dtPermisos.Rows) // { // int idPadre = 0; // if (row["IdPadre"] != DBNull.Value) // { // idPadre = Convert.ToInt32(row["IdPadre"]); // } // var id = Convert.ToInt32(row["Id"]); // var descripcion = row["Descripcion"].ToString().Trim(); // var esPermiso = Convert.ToBoolean(row["EsPermiso"].ToString().Trim()); // PermisoComponente componente; // if (!esPermiso) // componente = new GrupoPermiso(); // else // componente = new BE.Composite.Permiso(); // componente.Id = id; // componente.Descripcion = descripcion; // var padre = ObtenerComponente(idPadre, lstPermisos); // if (padre == null) // { // lstPermisos.Add(componente); // } // else // { // padre.Agregar(componente); // } // } // return lstPermisos; // } // catch (Exception e) // { // Console.WriteLine(e); // throw; // } //} private PermisoComponente ObtenerPermisos(string idPermiso) { try { var lstPermisos = new List <PermisoComponente>(); var pars = new IDbDataParameter[1]; string query = ""; if (!String.IsNullOrEmpty(idPermiso)) { var where = idPermiso; pars[0] = _accesoBaseDeDatos.CrearParametro("@Condicion", Convert.ToInt32(where)); //query = $@"with Recursivo as ( select sp2.IdPadre, sp2.IdHijo // from PermisoPermiso SP2 // where sp2.IdPadre = @Condicion // UNION ALL // select sp.IdPadre, sp.IdHijo // from PermisoPermiso sp // inner join Recursivo r on r.IdHijo = sp.IdPadre // ) // select r.IdPadre, r.IdHijo, p.Id, p.Descripcion, p.EsPermiso // from recursivo r // inner join Permiso p on (r.IdHijo = p.Id) // "; query = $@"with Recursivo as ( select sp2.IdPadre, sp2.IdHijo from PermisoPermiso SP2 where sp2.IdPadre = @Condicion UNION ALL select sp.IdPadre, sp.IdHijo from PermisoPermiso sp inner join Recursivo r on r.IdHijo = sp.IdPadre ) select perper.IdPadre, perper.IdHijo, p.Id, p.Descripcion, p.EsPermiso from PermisoPermiso perper right join Permiso p on (perper.IdHijo = p.Id) where p.Id = @Condicion union all select r.IdPadre, r.IdHijo, p.Id, p.Descripcion, p.EsPermiso from recursivo r inner join Permiso p on (r.IdHijo = p.Id) "; } else { pars = null; query = $@" with Recursivo as ( select sp2.IdPadre, sp2.IdHijo from PermisoPermiso SP2 where sp2.IdPadre is null UNION ALL select sp.IdPadre, sp.IdHijo from PermisoPermiso sp inner join Recursivo r on r.IdHijo = sp.IdPadre ) select r.IdPadre, r.IdHijo, p.Id, p.Descripcion, p.EsPermiso from recursivo r right join Permiso p on (r.IdHijo = p.Id) "; } var dtPermisos = _accesoBaseDeDatos.Seleccionar(query, pars); if (dtPermisos.Rows.Count == 0) { return(null); } foreach (DataRow row in dtPermisos.Rows) { int idPadre = 0; if (row["IdPadre"] != DBNull.Value) { idPadre = Convert.ToInt32(row["IdPadre"]); } var id = Convert.ToInt32(row["Id"]); var descripcion = row["Descripcion"].ToString().Trim(); var esPermiso = Convert.ToBoolean(row["EsPermiso"].ToString().Trim()); PermisoComponente componente; if (!esPermiso) { componente = new GrupoPermiso(); } else { componente = new BE.Composite.Permiso(); } componente.Id = id; componente.Descripcion = descripcion; var padre = ObtenerComponente(idPadre, lstPermisos); if (padre == null) { lstPermisos.Add(componente); } else { padre.Agregar(componente); } } return(lstPermisos[0]); } catch (Exception e) { Console.WriteLine(e); throw; } }