Esempio n. 1
0
        //   [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) }));
            }
        }
Esempio n. 2
0
        //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;
        }