private void FillRemovePrivilege(PrivilegeDepthExtended initialValue , PrivilegeDepthExtended currentValue , PrivilegeType privilegeType , HashSet <Guid> privilegesRemove ) { if (currentValue == initialValue) { return; } if (privilegeType == PrivilegeType.None || EntityPrivileges == null || !EntityPrivileges.Any() ) { return; } var privilege = EntityPrivileges.FirstOrDefault(p => p.PrivilegeType == privilegeType); if (privilege == null) { return; } if (currentValue == PrivilegeDepthExtended.None) { privilegesRemove.Add(privilege.PrivilegeId); } }
public DataResponse <EntityPrivileges> GetPrivilegeById(int UserId, int CurrentBusinessId) { var response = new DataResponse <EntityPrivileges>(); try { base.DBInit(); var model = new EntityPrivileges(); model.UserId = UserId; model.User = new RepositoryUserProfile().GetUserbyId(UserId); var UserPrivilage = DBEntity.UserPrivileges.Where(a => a.UserId == UserId && a.BusinessId == CurrentBusinessId).ToList(); model.UserDepartments = DBEntity.UserDepartments.Where(a => a.UserId == UserId).Select(a => new DepartmentPrivileges { DepartmentName = a.Department.DepartmentName, Privileges = a.Department.DepartmentPrivileges.Where(b => b.DepartmentId == a.DepartmentId).Select(c => new SelectListItem { Value = c.Privilege.Id.ToString(), Text = c.Privilege.Title }) }).ToList(); model.UserRoles = DBEntity.Roles.Where(a => a.BusinessId == CurrentBusinessId && a.Users.Any(u => u.Id == UserId)).Select(a => new DepartmentPrivileges { DepartmentName = a.Name, Privileges = a.RolePrivileges.Where(b => b.RoleId == a.Id).Select(c => new SelectListItem { Value = c.Privilege.Id.ToString(), Text = c.Privilege.Title }) }).ToList(); model.Modules = DBEntity.Privileges.GroupBy(a => a.ModuleId).Select(g => new Modulesmodel { ModuleName = g.FirstOrDefault(a => a.ModulesMaster.Id == g.Key).ModulesMaster.Title, UserPrivileges = g.Select(b => new Privileges { Id = b.Id, Name = b.Title, }).ToList() }).OrderByDescending(a => a.ModuleName).ToList(); model.Modules.ForEach(a => a.UserPrivileges.ForEach(b => { b.Deny = UserPrivilage.Any(c => c.PrivilegeId == b.Id) ? (bool?)UserPrivilage.Any(c => c.PrivilegeId == b.Id && c.IsDeny == true) : null; b.Allow = b.Deny == null ? null : !b.Deny; }) ); response.Model = model; } catch (Exception ex) { ex.Log(); } finally { base.DBClose(); } return(response); }
private void FillAddPrivilege(PrivilegeDepthExtended initialValue , PrivilegeDepthExtended currentValue , PrivilegeType privilegeType , Dictionary <Guid, PrivilegeDepth> privilegesAdd ) { if (currentValue == initialValue) { return; } if (privilegeType == PrivilegeType.None || EntityPrivileges == null || !EntityPrivileges.Any() ) { return; } var privilege = EntityPrivileges.FirstOrDefault(p => p.PrivilegeType == privilegeType); if (privilege == null) { return; } if (currentValue != PrivilegeDepthExtended.None) { if (privilegesAdd.ContainsKey(privilege.PrivilegeId)) { privilegesAdd[privilege.PrivilegeId] = (PrivilegeDepth)Math.Max((int)currentValue, (int)privilegesAdd[privilege.PrivilegeId]); } else { privilegesAdd.Add(privilege.PrivilegeId, (PrivilegeDepth)currentValue); } } }