Ejemplo n.º 1
0
        public IActionResult MenuItemEditor(int menuId, int menuItemId)
        {
            var menu = _menuService.Get(menuId);

            if (menu == null)
            {
                return(NotFound());
            }
            var menuItem = menuItemId > 0 ? menu.MenuItems.FirstOrDefault(x => x.Id == menuItemId) : new MenuItem();

            if (menuItem == null)
            {
                return(NotFound());
            }
            var model = _modelMapper.Map <MenuItemModel>(menuItem);

            if (menuItem.SeoMeta != null)
            {
                model.Url = SeoMetaHelper.GetUrl(menuItem.SeoMeta);
                var entityId = menuItem.SeoMeta.EntityId;
                switch (menuItem.SeoMeta.EntityName)
                {
                case nameof(Product):
                    model.SeoMetaTargetName = _productService.FirstOrDefault(y => y.Id == entityId)?.Name ?? "NA";
                    break;

                case nameof(Category):
                    model.SeoMetaTargetName =
                        _categoryService.FirstOrDefault(y => y.Id == entityId)?.Name ?? "NA";
                    break;

                case nameof(ContentPage):
                    model.SeoMetaTargetName =
                        _contentPageService.FirstOrDefault(y => y.Id == entityId)?.Name ?? "NA";
                    break;
                }
            }

            IList <SelectListItem> availableMenuItems = null;

            //send available parent menu items to which this menu item can be moved to
            if (menu.MenuItems != null)
            {
                menu.MenuItems     = menu.MenuItems.GetWithParentTree();
                availableMenuItems = SelectListHelper.GetSelectItemListWithAction(
                    menu.MenuItems.Where(x => x.ParentId != menuItemId).ToList(), x => x.Id,
                    item => item.GetFieldBreadCrumb(y => y.Name)).OrderBy(x => x.Text).ToList();
            }

            return(R.Success.With("menuItem", model).With("availableMenuItems", availableMenuItems).Result);
        }