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); } }
public static Perfil DataToEntidad(Data.USER.Perfil d, bool EsListado = true) { var permisos = new List <Permiso>(); if (!EsListado) { foreach (var p in d.Permisoes) { permisos.Add(LPermiso.DataToEntidad(p, false)); } } return(new Entidades.Perfil() { Descripcion = d.PerfilDescripcion, Habilitado = d.PerfilHabilitado.Value, ID = d.PerfilID, Nombre = d.PerfilNombre, Permisos = permisos, TodosPermisos = null }); }
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); } }