public static void AddRoleDefaultPermissionKeys(int roleId) { var dbPermissionRoleKeys = new List <PermissionRoleKey>(); var dbPermissionKeys = db.PermissionKeys .Join(db.PermissionValues.Where(x => x.IsDefault), x => x.Key, x => x.PermissionKey, (k, v) => new { Key = k.Key, DefaultValue = v.Value }).ToList(); foreach (var dbPermissionKey in dbPermissionKeys) { var dbKey = new PermissionRoleKey(); dbKey.PermissionKey = dbPermissionKey.Key; dbKey.PermissionRoleId = roleId; dbKey.PermissionValue = dbPermissionKey.DefaultValue; dbPermissionRoleKeys.Add(dbKey); } db.PermissionRoleKeys.AddRange(dbPermissionRoleKeys); db.SaveChanges(); }
private static void AddPermission(string key, string keyName, string keyDescription, string groupName, PermissionValueTypes type = PermissionValueTypes.Classic) { _actualPermissionKeys.Add(key); PermissionKey permissionKey = db.PermissionKeys.FirstOrDefault(o => o.Key == key); if (permissionKey != null) { permissionKey.KeyName = keyName; permissionKey.GroupName = groupName; permissionKey.KeyDescription = keyDescription; db.SaveChanges(); return; } permissionKey = new PermissionKey() { Key = key, KeyName = keyName, KeyDescription = keyDescription, GroupName = groupName }; List <PermissionValue> permissionValueList; switch (type) { case PermissionValueTypes.Classic: permissionValueList = new List <PermissionValue> { new PermissionValue() { PermissionKey = key, Value = "false", Name = "Запрещено", IsDefault = true }, new PermissionValue() { PermissionKey = key, Value = "true", Name = "Разрешено", IsDefault = false }, }; break; case PermissionValueTypes.Tree: permissionValueList = new List <PermissionValue> { new PermissionValue() { PermissionKey = key, Value = "employee", Name = "Только себя", IsDefault = true }, new PermissionValue() { PermissionKey = key, Value = "departament", Name = "Подразделение", IsDefault = false }, new PermissionValue() { PermissionKey = key, Value = "all", Name = "Вся организация", IsDefault = false }, }; break; default: throw new Exception("этого не должно произойти никогда"); } db.PermissionValues.AddRange(permissionValueList); db.PermissionKeys.Add(permissionKey); var dbPermissionRoleKeys = new List <PermissionRoleKey>(); var roleIds = db.PermissionRoles.Select(x => x.Id).ToList(); foreach (var roleId in roleIds) { var dbKey = new PermissionRoleKey(); dbKey.PermissionKey = key; dbKey.PermissionRoleId = roleId; dbKey.PermissionValue = permissionValueList.Single(x => x.IsDefault).Value; dbPermissionRoleKeys.Add(dbKey); } db.PermissionRoleKeys.AddRange(dbPermissionRoleKeys); db.SaveChanges(); }