예제 #1
0
        //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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        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;
            }
        }
예제 #4
0
        //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;
            }
        }