// [HttpPost] public async Task <IActionResult> GetChildren(string parentId, string parentType) { //var notAuthorized = T("Not authorized to access the admin panel."); //if (!Services.Authorizer.Authorize(StandardPermissions.AccessAdminPanel, notAuthorized)) //{ // return Json(new { Success = false, Message = notAuthorized.Text }); //} try { //https://stackoverflow.com/questions/18602923/selectmany-cannot-infer-type-argument-why-not // var level0 = _breadcrumbNodeProviders.Select(async p => await p.GetChildren(parentType, parentId)).Select(x=>x.Result); var children = await _breadCrumbNodeProvider.GetChildren(parentType, parentId); // var children = level0.SelectMany(x => x); //var children = new List<BreadCrumbNode>(); // foreach (var provider in toplevel) // { // children.Add(provider); // } // var children = _breadcrumbNodeProviders.Select(p => p.GetChildren(parentType, parentId).Result.Select(x=>x)); return(Json(children)); } catch (Exception exception) { return (Json(new { Success = false, Message = String.Format("Breadcrumb expansion failed: {0}", exception.Message) })); } }
//http://www.hexacta.com/2016/06/01/task-run-vs-async-await/ private async void GetRootNode(string id, AdvancedBreadCrumbPartViewModel model, string type = "root") { //if (!Services.Authorizer.Authorize(StandardPermissions.AccessAdminPanel, // T("Not allowed to access admin panel"))) // return new HttpUnauthorizedResult(); //https://stackoverflow.com/questions/35011656/async-await-in-linq-select var node = await GetBreadCrumbNode(id, type); //var node = await task; if (node == null) { node = new BreadCrumbNode { Id = "/", Type = "root", Title = T["Root"].Value }; // var node =await GetBreadCrumbNode(id, type) ?? new BreadCrumbNode { Id = "/", Type = "root", Title = T["Root"].Value }; //https://stackoverflow.com/questions/18602923/selectmany-cannot-infer-type-argument-why-not var children = await _breadCrumbNodeProvider.GetChildren(type, id); // var levell0 = children0.Select(x => x); //var levell0 = _breadcrumbNodeProviders.OfType<AdvancedBreadCrumbNodeProvider>() // .Select(p => p.GetChildren(type, id).Result.Select(x => x)); // var children = levell0.SelectMany(x => x); model.Node = node; model.Children = children; //var model = new TreeExplorerViewModel //{ // Node = node, // Children = children //}; //if (Request.IsAjaxRequest()) //{ // return new JsonResult { Data = model }; //} // return model; } // return Task.CompletedTask; }