public ControlPanelViewModel(IRepository repository, ControlPanelPage page)
        {
            this.repository = repository;
            this.Items = new List<ControlPanelItemViewModel>();

            this.Initialize(page);
        }
        private void Initialize(ControlPanelPage page)
        {
            this.Items.Add(new ControlPanelItemViewModel 
            { 
                Title = string.Format(StringResource.controlPanel_OrdersTemplate, 2, 100),
                ActionName = "Orders",
                IsActive = page == ControlPanelPage.Orders
            });

            var newUsersCount = this.repository.GetUsers(x => !x.IsActivated).Count;
            this.Items.Add(new ControlPanelItemViewModel
            {
                Title = StringResource.controlPanel_UsersTemplate,
                Badge = newUsersCount > 0 ? newUsersCount.ToString() : null,
                ActionName = "Users",
                IsActive = page == ControlPanelPage.Users
            });

            this.Items.Add(new ControlPanelItemViewModel
            {
                ActionName = "Offers",
                Title = "Скидки",
                IsActive = page == ControlPanelPage.Offers
            });

            this.Items.Add(new ControlPanelItemViewModel
            {
                ActionName = "Pages",
                Title = StringResource.admin_Pages,
                IsActive = page == ControlPanelPage.Pages
            });

            this.Items.Add(new ControlPanelItemViewModel
            {
                Title = StringResource.admin_CurrencyPage,
                ActionName = "Currency",
                IsActive = page == ControlPanelPage.Currency
            });

            this.Items.Add(new ControlPanelItemViewModel
            {
                Title = "Шаблоны",
                ActionName = "Templates",
                IsActive = page == ControlPanelPage.Templates
            });

            this.Items.Add(new ControlPanelItemViewModel
            {
                Title = "Настройки",
                ActionName = "Settings",
                IsActive = page == ControlPanelPage.Settings
            });
        }
        public static MainMenuViewModel CreateAdminMenu(IRepository repository, ControlPanelPage page)
        {
            var newUsersCount     = repository.GetUsers(x => !x.IsActivated).Count;
            var mainMenuViewModel = new MainMenuViewModel {
                Menu = new List <MenuItemViewModel>(), MetaMenu = new List <MenuItemViewModel>()
            };

            mainMenuViewModel.MetaMenu.Add(new MenuItemViewModel {
                Glyph = "glyphicon glyphicon-log-out",
                Name  = StringResource.admin_Nav_Exit,
                Link  = new NavigationLink {
                    ActionName = "Index", ControllerName = "Main"
                }
            });

            mainMenuViewModel.Menu.Add(new MenuItemViewModel {
                Name  = StringResource.controlPanel_UsersTemplate,
                Badge = newUsersCount > 0 ? newUsersCount.ToString() : null,
                Link  = new NavigationLink {
                    ActionName = "Users", ControllerName = "Admin"
                },
                Glyph    = "glyphicon glyphicon-user",
                IsActive = page == ControlPanelPage.Users
            });

            /*
             * mainMenuViewModel.Menu.Add(new MenuItemViewModel
             * {
             *  Name = StringResource.admin_UsersOrdersAction,
             *  Badge = repository.GetOrdersWithStatus(new [] { OrderStatus.Placed }, null, 0, -1).Result.Count.ToString(),
             *  Link = new NavigationLink { ActionName = "Orders", ControllerName = "Admin" },
             *  Glyph = "glyphicon glyphicon-shopping-cart",
             *  IsActive = page == ControlPanelPage.Orders
             * });
             */

            mainMenuViewModel.Menu.Add(new MenuItemViewModel
            {
                Name = StringResource.admin_Pages,
                Link = new NavigationLink {
                    ActionName = "Pages", ControllerName = "Admin"
                },
                Glyph    = "glyphicon glyphicon-file",
                IsActive = page == ControlPanelPage.Pages
            });

            mainMenuViewModel.Menu.Add(new MenuItemViewModel
            {
                Name = StringResource.admin_CurrencyPage,
                Link = new NavigationLink {
                    ActionName = "Currency", ControllerName = "Admin"
                },
                Glyph    = "glyphicon glyphicon-usd",
                IsActive = page == ControlPanelPage.Currency
            });

            mainMenuViewModel.Menu.Add(new MenuItemViewModel
            {
                Name = StringResource.admin_Offers,
                Link = new NavigationLink {
                    ActionName = "Offers", ControllerName = "Admin"
                },
                Glyph    = "glyphicon glyphicon glyphicon-star",
                IsActive = page == ControlPanelPage.Offers
            });

            mainMenuViewModel.Menu.Add(new MenuItemViewModel
            {
                Name = "Шаблоны",
                Link = new NavigationLink {
                    ActionName = "Templates", ControllerName = "Admin"
                },
                Glyph    = "glyphicon glyphicon-list",
                IsActive = page == ControlPanelPage.Templates
            });

            mainMenuViewModel.Menu.Add(new MenuItemViewModel
            {
                Name = "Настройки",
                Link = new NavigationLink {
                    ActionName = "Settings", ControllerName = "Admin"
                },
                Glyph    = "glyphicon glyphicon-wrench",
                IsActive = page == ControlPanelPage.Settings
            });

            return(mainMenuViewModel);
        }