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); }
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 RelacionarPermisos(PermisoCompuestoBE pPermiso) { if (pPermiso.ListaPermisos.Count() > 0) { string queryQuitarRelaciones = "delete from hijosCompuesto where compuesto_id = " + pPermiso.ID + ";"; DBManager.GuardarCambios(queryQuitarRelaciones); foreach (PermisoAbstractoBE permiso in pPermiso.ListaPermisos) { if (permiso.GetType() == typeof(PermisoSimpleBE)) { string query = "insert into hijosCompuesto (compuesto_id, simple_id) values(" + pPermiso.ID + ", " + permiso.ID + ");"; DBManager.GuardarCambios(query); } } } }
public static void AltaPermiso(PermisoCompuestoBE pPermiso) { string query; InsertarID(pPermiso); if (pPermiso.PadreID != 0) { query = "insert into permisoCompuesto(permiso_id, nombre, compuesto_padre) values(" + pPermiso.ID + ", '" + pPermiso.Nombre + "', " + pPermiso.PadreID + ");"; } else { query = "insert into permisoCompuesto(permiso_id, nombre) values(" + pPermiso.ID + ", '" + pPermiso.Nombre + "');"; } DBManager.GuardarCambios(query); }
public static void EliminarPermisoCompuesto(PermisoCompuestoBE pPermiso) { foreach (PermisoAbstractoBE permiso in pPermiso.ListaPermisos) { if (permiso.GetType() == typeof(PermisoSimpleBE)) { QuitarRelacion(pPermiso.ID, permiso.ID); } else { EliminarPermisoCompuesto((PermisoCompuestoBE)permiso); } } string query = "delete from permisoCompuesto where permiso_id = " + pPermiso.ID + ";"; DBManager.GuardarCambios(query); }