public async Task MoveAsync(ITypeCategory category, TaskContext context) { var authentication = context.Authentication; var categories = category.GetService(typeof(ITypeCategoryCollection)) as ITypeCategoryCollection; var categoryPath = await categories.Dispatcher.InvokeAsync(() => categories.Random().Path); if (context.AllowException == false) { if (await VerifyAsync() == false) { return; } } await category.MoveAsync(authentication, categoryPath); async Task <bool> VerifyAsync() { if ((await category.GetAllTypesAsync(item => item.TypeState != TypeState.None)).Any() == true) { return(false); } if ((await category.GetAllUsingTablesAsync(item => item.TableState != TableState.None)).Any() == true) { return(false); } return(await category.Dispatcher.InvokeAsync(() => { if (category.Parent == null) { return false; } if (category.Parent.Path == categoryPath) { return false; } if (category.Path == categoryPath) { return false; } if (categoryPath.StartsWith(category.Path) == true) { return false; } if (category.VerifyAccessType(authentication, AccessType.Master) == false) { return false; } return true; })); } }
public async Task RenameAsync(ITypeCategory category, TaskContext context) { var authentication = context.Authentication; var categoryName = RandomUtility.NextIdentifier(); if (context.AllowException == false) { if (category.Parent == null) { return; } if (await category.Dispatcher.InvokeAsync(() => category.VerifyAccessType(authentication, AccessType.Master)) == false) { return; } } await category.RenameAsync(authentication, categoryName); }