Esempio n. 1
0
        private IEnumerable <BreadCrumbViewModel> GetItemBreadCrumbs(int id, BreadCrumbType fromType, BreadCrumbType type)
        {
            var item   = _productData.GetProductById(id);
            var crumbs = new List <BreadCrumbViewModel>();

            if (fromType == BreadCrumbType.Section)
            {
                crumbs.Add(new BreadCrumbViewModel()
                {
                    BreadCrumbType = fromType,
                    Id             = item.Section.Id.ToString(),
                    Name           = item.Section.Name
                });
            }
            else
            {
                crumbs.Add(new BreadCrumbViewModel()
                {
                    BreadCrumbType = fromType,
                    Id             = item.Brand.Id.ToString(),
                    Name           = item.Brand.Name
                });
            }

            crumbs.Add(new BreadCrumbViewModel()
            {
                BreadCrumbType = type,
                Id             = item.Id.ToString(),
                Name           = item.Name
            });
            return(crumbs);
        }
        /// <summary>
        /// Формирует список бренд+товар или категория+товар
        /// </summary>
        /// <param name="id"></param>
        /// <param name="fromType"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        private IEnumerable <BreadCrumbViewModel> GetItemBreadCrumbs(int id, BreadCrumbType fromType,
                                                                     BreadCrumbType type)
        {
            var item   = _productService.GetProductById(id);
            var crumbs = new List <BreadCrumbViewModel>();

            var breadCrumbViewModel = fromType == BreadCrumbType.Category
                ? new BreadCrumbViewModel
            {
                BreadCrumbType = fromType,
                Id             = item.Category.Id.ToString(),
                Name           = item.Category.Name
            }
                : new BreadCrumbViewModel
            {
                BreadCrumbType = fromType,
                Id             = item.Brand.Id.ToString(),
                Name           = item.Brand.Name
            };

            crumbs.Add(breadCrumbViewModel);

            crumbs.Add(new BreadCrumbViewModel
            {
                BreadCrumbType = type,
                Id             = item.Id.ToString(),
                Name           = item.Name
            });

            return(crumbs);
        }
Esempio n. 3
0
        /// <summary>Displays a menu an prompts the user to select a menu item.</summary>
        /// <param name="menuName">The name of the menu (it's NOT case sensitive)</param>
        /// <param name="title">The title of the menu</param>
        /// <param name="breadCrumbType">The type of breadcrumb trail you would like to see.</param>
        public async Task DisplayMenuAsync(string menuName, string title, BreadCrumbType breadCrumbType)
        {
            var menuList = _menuRepository.LoadMenus(menuName);

            var instantiatedMenuList = _menuRepository.CreateMenuItems(menuList);

            var newMenu = new ConsoleMenuWrapper
            {
                Title           = title,
                BreadCrumbTitle = BuildBreadCrumbTrail(breadCrumbType, title),
                MenuItems       = instantiatedMenuList
            };

            _menuStack.Push(newMenu);

            bool clearScreen = true;

            while (true)
            {
                ShowOneMenu(clearScreen);

                ConsoleMenuItemResponse response = await DoWorkAsync();

                if (response.ExitMenu)
                {
                    break;
                }

                clearScreen = response.ClearScreen;
            }

            _menuStack.Pop();
        }
Esempio n. 4
0
        public void Initialize(BreadCrumbType type, EntityType entityType, string key, string projectionkey)
        {
            this.type = type;

            switch (entityType)
            {
            case EntityType.BusinessEntity:
                AddBusinessBlurb(key, false);
                break;

            case EntityType.BusinessService:
                if (null != projectionkey)
                {
                    AddServiceProjectionBlurb(key, projectionkey, false);
                }
                else
                {
                    AddServiceBlurb(key, false);
                }
                break;

            case EntityType.BindingTemplate:
                AddBindingBlurb(key, false);
                break;

            case EntityType.TModel:
                AddTModelBlurb(key, false);
                break;

            default:
                break;
            }
        }
Esempio n. 5
0
 public TestSubMenuItem(string menu, string text, string title, BreadCrumbType breadCrumbType, IConsoleMenuController controller)
 {
     _menu           = menu;
     _title          = title;
     _breadCrumbType = breadCrumbType;
     _controller     = controller;
     ItemText        = text;
 }
        public IViewComponentResult Invoke(
            BreadCrumbType type,
            int id,
            BreadCrumbType fromType)
        {
            if (!Enum.IsDefined(typeof(BreadCrumbType), type))
            {
                throw new InvalidEnumArgumentException(nameof(type), (int)type,
                                                       typeof(BreadCrumbType));
            }

            if (!Enum.IsDefined(typeof(BreadCrumbType), fromType))
            {
                throw new InvalidEnumArgumentException(nameof(fromType),
                                                       (int)fromType, typeof(BreadCrumbType));
            }

            switch (type)
            {
            case BreadCrumbType.Section:
                var section = _productData.GetSectionById(id);
                return(View(new List <BreadCrumbViewModel>()
                {
                    new BreadCrumbViewModel()
                    {
                        BreadCrumbType = type,
                        Id = id.ToString(),
                        Name = section.Name
                    }
                }));

            case BreadCrumbType.Brand:
                var brand = _productData.GetBrandById(id);
                return(View(new List <BreadCrumbViewModel>()
                {
                    new BreadCrumbViewModel()
                    {
                        BreadCrumbType = type,
                        Id = id.ToString(),
                        Name = brand.Name
                    }
                }));

            case BreadCrumbType.Item:
                var crumbs = GetItemBreadCrumbs(id, fromType, type);
                return(View(crumbs));

            case BreadCrumbType.None:

            default:
                return(View(new List <BreadCrumbViewModel>()));
            }
        }
Esempio n. 7
0
        private (BreadCrumbType Type, int Id, BreadCrumbType FromType) GetParametres()
        {
            BreadCrumbType type = Request.Query.ContainsKey("SectionId")
                ? BreadCrumbType.Section
                : Request.Query.ContainsKey("BrandId")
                    ? BreadCrumbType.Brand
                    : BreadCrumbType.None;

            if ((string)ViewContext.RouteData.Values["action"] == nameof(CatalogController.ProductDetails))
            {
                type = BreadCrumbType.Product;
            }

            var id = 0;

            var from_type = BreadCrumbType.Section;

            switch (type)
            {
            default: throw new ArgumentOutOfRangeException();

            case BreadCrumbType.None: break;

            case BreadCrumbType.Section:
                id = int.Parse(Request.Query["sectionId"].ToString());
                break;

            case BreadCrumbType.Brand:
                id = int.Parse(Request.Query["brandId"].ToString());
                break;

            case BreadCrumbType.Product:

                //реализация с вебинара:
                //id = int.Parse(ViewContext.RouteData.Values["productId"].ToString() ?? string.Empty);     //так ключ не находит, выдает ошибку
                //if (Request.Query.ContainsKey("fromBrand"))   //не понятен смысл условия, т.к. при переходе по ссылке на товар (откуда угодно),
                //from_type = BreadCrumbType.Brand;             //from_type всегда будет становится типом Brand

                //своя реализация:
                id = int.Parse(Request.Query["productId"].ToString()); //через ViewContext.RouteData.Value (как в вебинаре) не находило
                if (Request.Query["fromBrand"] == "brand")             //fromBrand размещен в ссылке на товар со страницы магазина как asp-route-fromBrand
                {
                    from_type = BreadCrumbType.Brand;
                }

                break;
            }

            return(type, id, from_type);  //кортеж
        }
        public IViewComponentResult Invoke(BreadCrumbType type, int id, BreadCrumbType fromType)
        {
            if (!Enum.IsDefined(typeof(BreadCrumbType), type))
            {
                throw new InvalidEnumArgumentException(nameof(type), (int)type, typeof(BreadCrumbType));
            }
            if (!Enum.IsDefined(typeof(BreadCrumbType), fromType))
            {
                throw new InvalidEnumArgumentException(nameof(fromType), (int)fromType, typeof(BreadCrumbType));
            }

            switch (type)
            {
            case BreadCrumbType.Category:
                // Название категории
                var category = _productService.GetCategoryById(id);
                return(View(new List <BreadCrumbViewModel>
                {
                    new BreadCrumbViewModel
                    {
                        BreadCrumbType = BreadCrumbType.Category,
                        Id = id.ToString(),
                        Name = category.Name
                    }
                }));

            case BreadCrumbType.Brand:
                // Название бренда
                var brand = _productService.GetBrandById(id);
                return(View(new List <BreadCrumbViewModel>
                {
                    new BreadCrumbViewModel
                    {
                        BreadCrumbType = BreadCrumbType.Brand,
                        Id = id.ToString(),
                        Name = brand.Name
                    }
                }));

            case BreadCrumbType.Item:
                // Категория или бренд + название товара
                var crumbs = GetItemBreadCrumbs(id, fromType, type);
                return(View(crumbs));

            case BreadCrumbType.None:
            default:
                return(View(new List <BreadCrumbViewModel>()));
            }
        }
Esempio n. 9
0
        public void Initialize(BreadCrumbType type, EntityType entityType, string key, int index)
        {
            this.type = type;

            switch (entityType)
            {
            case EntityType.Contact:
                AddContactBlurb(key, index, false);
                break;

            case EntityType.TModelInstanceInfo:
                AddInstanceInfoBlurb(key, index, false);
                break;

            default:
                break;
            }
        }
Esempio n. 10
0
        /// <summary> Передаем параметры </summary>
        public async Task <IViewComponentResult> InvokeAsync(BreadCrumbType type, int id, BreadCrumbType fromType)
        {
            //Проверяем параметры
            if (!Enum.IsDefined(typeof(BreadCrumbType), type))
            {
                throw new InvalidEnumArgumentException(nameof(type), (int)type, typeof(BreadCrumbType));
            }
            if (!Enum.IsDefined(typeof(BreadCrumbType), fromType))
            {
                throw new InvalidEnumArgumentException(nameof(fromType), (int)fromType, typeof(BreadCrumbType));
            }

            switch (type)
            {
            case BreadCrumbType.Section:
                var section = _productData.GetSectionById(id);
                return(View(new List <BreadCrumbViewModel>
                {
                    new BreadCrumbViewModel()
                    {
                        BreadCrumbType = type,
                        Id = id,
                        Name = section.Name
                    }
                }));

            case BreadCrumbType.Brand:
                var brand = _productData.GetBrandById(id);
                return(View(new List <BreadCrumbViewModel>
                {
                    new BreadCrumbViewModel()
                    {
                        BreadCrumbType = type,
                        Id = id,
                        Name = brand.Name
                    }
                }));

            case BreadCrumbType.Item:
                var crumbs = GetItemBreadCrumbs(id, fromType, type);
                return(View(crumbs));
            }
            return(View(new List <BreadCrumbViewModel>()));
        }
Esempio n. 11
0
        /// <summary>Creates a breadcrumb trail.</summary>
        /// <param name="breadCrumbType">The type of breadcrumb trail you would like to see.</param>
        /// <param name="title">The title of the menu</param>
        private string BuildBreadCrumbTrail(BreadCrumbType breadCrumbType, string title)
        {
            if (breadCrumbType == BreadCrumbType.None)
            {
                return(string.Empty);
            }

            var currentMenu = _menuStack.Count > 0 ? _menuStack.Peek() : null;

            if (currentMenu == null || string.IsNullOrWhiteSpace(currentMenu.Title))
            {
                return(title);
            }

            if (breadCrumbType == BreadCrumbType.ParentOnly || string.IsNullOrWhiteSpace(currentMenu.BreadCrumbTitle))
            {
                return($"{currentMenu.Title} > {title}");
            }

            return($"{currentMenu.BreadCrumbTitle} > {title}");
        }
Esempio n. 12
0
 public void Initialize(BreadCrumbType type, EntityType entityType, string key)
 {
     Initialize(type, entityType, key, null);
 }