Ejemplo n.º 1
0
        private static void BucleAgregarPadre(ref Data.USER.Perfil perfil, ref Data.USER.Permiso permiso)
        {
            var perID = permiso.PermisoID;
            var padre = permiso.Permiso2;

            if (permiso.PermisoPadreID.HasValue)
            {
                LPerfil.BucleAgregarPadre(ref perfil, ref padre);
            }
            if (!perfil.Permisoes.Any(x => x.PermisoID == perID))
            {
                perfil.Permisoes.Add(permiso);
            }
        }
Ejemplo n.º 2
0
 public static long Guardar(Perfil Entidad)
 {
     try
     {
         using (var BD = new Data.USER.FACTURAUSEREntities())
         {
             if (Entidad.ID > 0)
             {
                 //editar
                 if (BD.Perfils.Count(x => x.PerfilNombre.ToUpper().Equals(Entidad.Nombre.ToUpper().Trim()) && x.PerfilID != Entidad.ID) > 0)
                 {
                     throw new Exception("El nombre del perfil ya se encuentra registrado en el sistema");
                 }
                 var p = BD.Perfils.FirstOrDefault(x => x.PerfilID == Entidad.ID);
                 if (p == null)
                 {
                     throw new Exception("El perfil no existe");
                 }
                 p.PerfilDescripcion = Entidad.Descripcion;
                 p.PerfilHabilitado  = Entidad.Habilitado;
                 p.PerfilNombre      = Entidad.Nombre;
                 p.Permisoes.Clear();
                 foreach (var m in Entidad.Permisos)
                 {
                     var per = BD.Permisoes.FirstOrDefault(x => x.PermisoID == m.ID);
                     if (per != null)
                     {
                         if (per.PermisoPadreID.HasValue)
                         {
                             var padre = per.Permiso2;
                             LPerfil.BucleAgregarPadre(ref p, ref padre);
                         }
                         if (!p.Permisoes.Any(x => x.PermisoID == per.PermisoID))
                         {
                             p.Permisoes.Add(per);
                         }
                     }
                 }
                 BD.SaveChanges();
                 return(p.PerfilID);
             }
             else
             {
                 //nuevo
                 if (BD.Perfils.Count(x => x.PerfilNombre.ToUpper().Equals(Entidad.Nombre.ToUpper().Trim())) > 0)
                 {
                     throw new Exception("El nombre del perfil ya se encuentra registrado en el sistema");
                 }
                 Data.USER.Perfil p = new Data.USER.Perfil()
                 {
                     PerfilDescripcion = Entidad.Descripcion,
                     PerfilHabilitado  = Entidad.Habilitado,
                     PerfilNombre      = Entidad.Nombre
                 };
                 p.Permisoes = new List <Data.USER.Permiso>();
                 foreach (var m in Entidad.Permisos)
                 {
                     var per = BD.Permisoes.FirstOrDefault(x => x.PermisoID == m.ID);
                     if (per != null)
                     {
                         if (per.PermisoPadreID.HasValue)
                         {
                             var padre = per.Permiso2;
                             LPerfil.BucleAgregarPadre(ref p, ref padre);
                         }
                         if (!p.Permisoes.Any(x => x.PermisoID == per.PermisoID))
                         {
                             p.Permisoes.Add(per);
                         }
                     }
                 }
                 BD.Perfils.Add(p);
                 BD.SaveChanges();
                 return(p.PerfilID);
             }
         }
     }
     catch (Exception ex)
     {
         throw new Exception("Logica guardar", ex);
     }
 }