Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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>());
            }
        }
Exemplo n.º 3
0
        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);
        }