private bool ValidarPermisoHijo(BE.PermisoBE padre, BE.PermisoBE nuevoHijo, BE.PermisoBE padreOriginal) { bool esValido = true; if (nuevoHijo != null) { if (!padre.Equals(nuevoHijo)) { PermisoBE filtroPadre = new PermisoSimpleBE(); filtroPadre.Id = padre.Id; Int32 i = 0; this._daoFamilia.PermisoPadre = null; List <PermisoBE> listaPadres = this._daoFamilia.ConsultaRango(null, filtroPadre); PermisoBE padreDePadre; while (i < listaPadres.Count & esValido) { padreDePadre = listaPadres[i]; if (!padreDePadre.Equals(padreOriginal)) { esValido = this.ValidarPermisoHijo(padreDePadre, nuevoHijo, padreOriginal); } i += 1; } } else { esValido = false; } } else { esValido = false; } return(esValido); }
public static List <PermisoBE> ObtenerPermisos() { string query = "SELECT DISTINCT p.id, p.nombre, p.descripcion " + "FROM permiso p " + "LEFT JOIN permiso_permiso pp ON p.id = pp.permiso_padre_id " + "WHERE p.habilitado = 1 " + "AND pp.permiso_padre_id IS NULL"; try { DataTable table = SqlHelper.Obtener(query, new SqlParameter[0]); List <PermisoBE> perfiles = new List <PermisoBE>(); foreach (DataRow row in table.Rows) { PermisoBE permiso = new PermisoSimpleBE() { Descripcion = row["descripcion"].ToString(), Nombre = row["nombre"].ToString(), Id = int.Parse(row["id"].ToString()) }; perfiles.Add(permiso); } return(perfiles); } catch (Exception ex) { Log.Grabar(ex); return(new List <PermisoBE>()); } }
private static PermisoBE ObtenerPermiso(int permisoId, int profundidad) { PermisoBE permiso; List <int> hijosIds = new List <int>(); if (profundidad < 10) { hijosIds = ObtenerPermisosHijos(permisoId); } if (hijosIds.Any()) { // Es un permiso compuesto permiso = new PermisoCompuestoBE(); foreach (int hijoId in hijosIds) { PermisoBE permisoHijo = ObtenerPermiso(hijoId, profundidad + 1); permiso.AgregarPermisoHijo(permisoHijo); } } else { // Es un permiso simple permiso = new PermisoSimpleBE(); } CompletarPermiso(permiso, permisoId); return(permiso); }
public static void EliminarPermisoSimple(PermisoSimpleBE pPermiso) { string queryIntermedia = "delete from hijosCompuesto where simple_id = " + pPermiso.ID + ";"; string queryPermiso = "delete from permisoSimple where permiso_id = " + pPermiso.ID + ";"; DBManager.GuardarCambios(queryIntermedia); DBManager.GuardarCambios(queryPermiso); }
private static List <PermisoAbstractoBE> CargarBE(SqlDataReader pReader, bool pCompuesto, PermisoCompuestoBE pPermiso = null) { List <PermisoAbstractoBE> listaPermisos = new List <PermisoAbstractoBE>(); while (pReader.Read()) { if (pCompuesto) { if (!BuscarPermiso(listaPermisos, pReader.GetInt32(pReader.GetOrdinal("permiso_id")))) { PermisoCompuestoBE permisoCompuesto = new PermisoCompuestoBE(); permisoCompuesto.ID = pReader.GetInt32(pReader.GetOrdinal("permiso_id")); permisoCompuesto.Nombre = pReader.GetString(pReader.GetOrdinal("nombre")); permisoCompuesto.PadreID = pReader.GetInt32(pReader.GetOrdinal("compuesto_padre")); string queryHijosComp = "select * from permisoCompuesto where compuesto_padre = " + permisoCompuesto.ID; SqlDataReader readerHijosComp = DBManager.Obtener(queryHijosComp); permisoCompuesto.ListaPermisos.AddRange(CargarBE(readerHijosComp, true, permisoCompuesto)); string queryHijos = "select * from hijosCompuesto where compuesto_id = " + permisoCompuesto.ID; SqlDataReader readerHijos = DBManager.Obtener(queryHijos); permisoCompuesto.ListaPermisos.AddRange(CargarBE(readerHijos, false, permisoCompuesto)); if (pPermiso == null) { listaPermisos.Add(permisoCompuesto); } else { pPermiso.ListaPermisos.Add(permisoCompuesto); } } } else { PermisoSimpleBE permisoSimple = new PermisoSimpleBE(); permisoSimple.ID = pReader.GetInt32(pReader.GetOrdinal("permiso_id")); permisoSimple.Nombre = pReader.GetString(pReader.GetOrdinal("nombre")); if (pPermiso == null) { listaPermisos.Add(permisoSimple); } else { pPermiso.ListaPermisos.Add(permisoSimple); } } } pReader.Close(); return(listaPermisos); }
public static void AltaPermiso(PermisoSimpleBE pPermiso) { string query = "insert into permisoCompuesto(nombre) values(" + pPermiso.ID + ", '" + pPermiso.Nombre + "');"; DBManager.GuardarCambios(query); }