public async Task DeleteAsync(ITableCategory category, TaskContext context) { var authentication = context.Authentication; if (context.AllowException == false) { if (await VerifyAsync() == true) { return; } } await category.DeleteAsync(authentication); context.Pop(category); async Task <bool> VerifyAsync() { if ((await category.GetAllTablesAsync(item => true)).Any() == true) { return(false); } return(await category.Dispatcher.InvokeAsync(() => { if (category.Parent == null) { return false; } return true; })); } }
public async Task MoveAsync(ITableCategory category, TaskContext context) { var authentication = context.Authentication; var categories = category.GetService(typeof(ITableCategoryCollection)) as ITableCategoryCollection; 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.GetAllTablesAsync(item => item.TableState != TableState.None)).Any() == true) { return(false); } return(await category.Dispatcher.InvokeAsync(() => { if (category.Parent == null) { return false; } if (categoryPath.StartsWith(category.Path) == true) { return false; } if (category.Parent.Path == categoryPath) { return false; } if (categoryPath.StartsWith(category.Path) == true) { return false; } return true; })); } }