Пример #1
0
        public ActionResult SearchTabsPost(TabsViewModel viewModel)
        {
            var dic = new RouteValueDictionary()
            {
                { "tabkey", viewModel.TabKey },
                { "tabid", viewModel.TabId },
                { "MetalFilter", viewModel.MetalFilter },
                { "OrderByPrice", viewModel.OrderByPrice },
                { "itemsperpage", viewModel.ItemsPerPage }
            };

            var counter = 0;

            if (viewModel.CustomFilters != null)
            {
                foreach (var filterValue in viewModel.CustomFilters)
                {
                    //TODO do tis strongly typed with reflaction
                    dic.Add("CustomFilters" + "[" + counter.ToString() + "].Value", filterValue.Value);
                    dic.Add("CustomFilters" + "[" + counter.ToString() + "].Name", filterValue.Name);
                    counter++;
                }
                dic.Add("page", 1);
            }
            else
            {
                dic.Add("page", viewModel.Page);
            }


            return(RedirectToRoute("Tabs", dic));
        }
Пример #2
0
        /// <summary>
        /// 新增Tab
        /// </summary>
        /// <param name="viewModel"></param>
        /// <param name="cid"></param>
        /// <returns></returns>

        public ActionResult SaveTab(TabsViewModel viewModel, Guid cid)
        {
            var    column  = _repository.Find(cid);
            string tab     = column.Tab;
            var    listTab = Newtonsoft.Json.JsonConvert.DeserializeObject <List <TabsViewModel> >(tab);

            if (viewModel.Id == Guid.Parse("00000000-0000-0000-0000-000000000000"))
            {
                viewModel.Id = Guid.NewGuid();
                listTab.Add(viewModel);
            }
            else
            {
                //修改
                var first = listTab.First(s => s.Id == viewModel.Id);
                first.Name  = viewModel.Name;
                first.Icon  = viewModel.Icon;
                first.Img   = viewModel.Img;
                first.Intro = viewModel.Intro;
                first.Url   = viewModel.Url;
            }
            column.Tab = Newtonsoft.Json.JsonConvert.SerializeObject(listTab);
            _repository.Update(column);
            _unitOfWork.Commit();
            return(Json(true));
        }
Пример #3
0
        public void OrderBy_ShouldOrderByLowToHighWhenDefaultOrderingIsUsed()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");


            var orderBy = new DynamicOrderBy("price", "asc");

            jewelryRepository.Expect(x => x.OrderJewelryItemsBy(Arg <DynamicOrderBy> .Is.Equal(orderBy))).Repeat.Once();

            var viewModel = new TabsViewModel();

            viewModel.TabKey      = TAB_KEY;
            viewModel.TabId       = TAB_ID1;
            viewModel.MetalFilter = JewelMediaType.WhiteGold;


            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_regular3tabs, tabsRepository, jewelryRepository, fileSystem);

            tabsViewModelBuilder.Build();

            //Act
            //Assert
            jewelryRepository.VerifyAllExpectations();
        }
        public void PresentTabs_ShouldReturntheRightNumberOfItemsAfterMetalWhiteGoldFilter()
        {
            //Arrange

            var tabKey = "diamond-rings";
            var tabId  = "engagement-rings";

            var xmlSource         = new XmlSourceFactory();
            var tabsRepository    = new TabsRepository(xmlSource);
            var jewelryRepository = new JewelRepository(new SettingManager());
            var fileSystem        = new FileSystem();
            var pathBarGenerator  = MockRepository.GenerateStub <IPathBarGenerator>();

            var mapper = MockRepository.GenerateStub <IMappingEngine>();

            TabsController controller = new TabsController(tabsRepository, jewelryRepository, fileSystem, xmlSource, pathBarGenerator, mapper);

            var viewModel = new TabsViewModel();

            viewModel.TabKey      = tabKey;
            viewModel.TabId       = tabId;
            viewModel.MetalFilter = JewelMediaType.WhiteGold;

            //Act

            var resultview = controller.SearchTabs(viewModel);

            //Assert
            var model = resultview.Model as TabsViewModel;


            model.JewelryInTabContainersCollection.Should().HaveCount(9).And.OnlyContain(x => x.PictureURL.Contains("wg"));
        }
Пример #5
0
        public TabsPage(TabsViewModel tabsViewModel)
        {
            NavigationPage.SetHasBackButton(this, false);
            NavigationPage.SetHasNavigationBar(this, false);

            InitializeComponent();

            BindingContext = tabsViewModel;
        }
Пример #6
0
        public ViewResult SearchTabs(TabsViewModel viewModel)
        {
            XDocument tabsource = xmlSourceFactory.TabSource();

            TabsViewModelBuilder modelBuilder = new TabsViewModelBuilder(viewModel, tabsource, tabsRepository, jewelRepository, fileSystem);

            viewModel = modelBuilder.Build();
            viewModel.PathBarItems = pathBarGenerator.GenerateUsing <TabsPathBarResolver, ITabsViewModel>(viewModel);

            return(View("PresentTabs", viewModel));
        }
Пример #7
0
 public IActionResult Index(TabsViewModel vm)
 {
     if (vm == null)
     {
         vm = new TabsViewModel
         {
             ActiveTab = Tab.List
         };
     }
     return(View(vm));
 }
Пример #8
0
        public override async Task HandleArriveAsync(NavigationKind navigationKind)
        {
            if (navigationKind == NavigationKind.New)
            {
                _viewModel = ServiceProvider.GetRequiredService <TabsViewModel>();
            }

            _viewModel.SelectionRequested += ViewModel_SelectionRequested;

            if (navigationKind == NavigationKind.New)
            {
                await Navigation.PushAsync(new TabsPage(_viewModel));
            }
        }
Пример #9
0
        private static void ShowNewWindow(TabsViewModel mvm, Point location)
        {
            var activeWindow = Current.Windows.OfType <Window>().FirstOrDefault(w => w.IsActive) ?? Current.MainWindow;

            MainWindow mainWindow = new()
            {
                DataContext           = mvm,
                WindowStartupLocation = WindowStartupLocation.Manual,
                Left = activeWindow.Left + location.X,
                Top  = activeWindow.Top + location.Y
            };

            mainWindow.Show();
        }
    }
Пример #10
0
        public List <TabsViewModel> GetTabs()
        {
            List <TabsViewModel> result = new List <TabsViewModel>();

            var tabs = Entities.Tabs;

            foreach (var tab in tabs)
            {
                TabsViewModel current = new TabsViewModel(tab);

                result.Add(current);
            }

            return(result);
        }
Пример #11
0
        public List <TabsViewModel> GetTabs(Func <TabsViewModel, bool> predicate)
        {
            List <TabsViewModel> result = new List <TabsViewModel>();

            var tabs = Entities.Tabs;

            foreach (var tab in tabs)
            {
                TabsViewModel current = new TabsViewModel(tab);

                if (predicate(current))
                {
                    result.Add(current);
                }
            }

            return(result);
        }
Пример #12
0
        public IActionResult CreateTemplate(CreateTempViewModel model)
        {
            var tabModel = new TabsViewModel();
            var coModel  = new TestViewModel();

            if (ModelState.IsValid)
            {
                _fileService.CreateFile(model.TemplateName, model.TemplateText);
                coModel.Template   = model.TemplateName;
                tabModel.ActiveTab = Tab.Test;
                tabModel.TestModel = coModel;
            }
            else
            {
                tabModel.CreateTempModel = model;
                tabModel.ActiveTab       = Tab.Temps;
            }

            return(RedirectToAction("Index", tabModel));
        }
Пример #13
0
        private TabsViewModelBuilder CreateDefaultTabsViewModelBuilderWithAllMetalFilter()
        {
            var settingManager    = new FakeSettingManager();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var jewelryRepository = new FakeJewelRepository(settingManager);

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15421");

            var model = new TabsViewModel()
            {
                MetalFilter = JewelMediaType.All,
                TabKey      = TabKey,
                TabId       = TabID1
            };

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(model, xmldoc_regular3tabs,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            return(tabsViewModelBuilder);
        }
Пример #14
0
        public void Build_ShouldAddACustmFilterToTheRapository()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");


            jewelryRepository.Expect(x => x.AddFilterList(Arg <List <DynamicSQLWhereObject> >
                                                          .Matches(
                                                              m =>
                                                              m[0].Pattern == "cs_type = @0" &&
                                                              m[0].Valuelist.Contains("ruby")

                                                              ))).Repeat.Once();

            var viewModel = new TabsViewModel();

            viewModel.TabKey = TAB_KEY;
            viewModel.TabId  = TAB_ID1;

            viewModel.CustomFilters = new List <CustomTabFilterViewModel>
            {
                new CustomTabFilterViewModel()
                {
                    Name  = "gemstone-center-stone",
                    Value = (int)GemstoneCenterStoneFilterValues.Ruby
                }
            };



            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_tabswithgeneralfilter, tabsRepository,
                                                                jewelryRepository, fileSystem);


            //Act
            tabsViewModelBuilder.Build();
            //Assert
            jewelryRepository.VerifyAllExpectations();
        }
Пример #15
0
        public void Build_IfGivenATabKeyWithSpecialTebsReturnIsShowTabsToFalse()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");

            var viewModel = new TabsViewModel();

            viewModel.TabKey = TAB_KEY;
            viewModel.TabId  = SPECIAL_TABID1;

            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_specialtab, tabsRepository, jewelryRepository, fileSystem);

            viewModel = tabsViewModelBuilder.Build();

            //Act

            viewModel.IsShowTabs.Should().BeFalse();
            //Assert
        }
Пример #16
0
        public void Build_IfGivenAViewModelWithNoMetalFilterSetToDefaultOf1()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");

            var viewModel = new TabsViewModel();

            viewModel.TabKey = TAB_KEY;
            viewModel.TabId  = TAB_ID1;

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_regular3tabs, tabsRepository, jewelryRepository, fileSystem);

            viewModel = tabsViewModelBuilder.Build();

            //Act

            var tabsContainers = viewModel.JewelryInTabContainersCollection;

            //Assert
            tabsContainers.Should().OnlyContain(x => x.Metal == "White Gold 18K");
        }
Пример #17
0
        public void Build_ShouldPassTheCurrentValueOfTheGeneralFilterToTheViewModelForPresistance()
        {
            //Arrange


            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");


            var viewModel = new TabsViewModel
            {
                TabKey        = TAB_KEY,
                TabId         = TAB_ID1,
                CustomFilters = new List <CustomTabFilterViewModel>
                {
                    new CustomTabFilterViewModel()
                    {
                        Name  = "gemstone-center-stone",
                        Value = (int)GemstoneCenterStoneFilterValues.Ruby
                    }
                }
            };



            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_tabswithgeneralfilter, tabsRepository,
                                                                jewelryRepository, fileSystem);


            //Act
            var result = tabsViewModelBuilder.Build();

            //Assert
            result.CustomFilters[0].Value.Should().Be(1);
        }
Пример #18
0
        public IActionResult SwitchToTabs(string tabname)
        {
            var vm = new TabsViewModel();

            switch (tabname)
            {
            case "List":
                vm.ActiveTab = Tab.List;
                break;

            case "Temps":
                vm.ActiveTab = Tab.Temps;
                break;

            case "Test":
                vm.ActiveTab = Tab.Test;
                break;

            default:
                vm.ActiveTab = Tab.List;
                break;
            }
            return(RedirectToAction("Index", vm));
        }
Пример #19
0
        /// <summary>
        /// Register commands
        /// </summary>
        private void RegisterCommands()
        {
            SelectGreatestTab = new RelayCommand(() =>
            {
                if (SelectedTab is GreatestTabViewModel)
                {
                    return;
                }
                foreach (var greatestTab in Tabs.OfType <GreatestTabViewModel>())
                {
                    SelectedTab = greatestTab;
                }
            });

            SelectPopularTab = new RelayCommand(() =>
            {
                if (SelectedTab is PopularTabViewModel)
                {
                    return;
                }
                foreach (var popularTab in Tabs.OfType <PopularTabViewModel>())
                {
                    SelectedTab = popularTab;
                }
            });

            SelectRecentTab = new RelayCommand(() =>
            {
                if (SelectedTab is RecentTabViewModel)
                {
                    return;
                }
                foreach (var recentTab in Tabs.OfType <RecentTabViewModel>())
                {
                    SelectedTab = recentTab;
                }
            });

            SelectSearchTab = new RelayCommand(() =>
            {
                if (SelectedTab is SearchTabViewModel)
                {
                    return;
                }
                foreach (var searchTab in Tabs.OfType <SearchTabViewModel>())
                {
                    SelectedTab = searchTab;
                }
            });

            SelectFavoritesTab = new RelayCommand(() =>
            {
                if (SelectedTab is FavoritesTabViewModel)
                {
                    return;
                }
                foreach (var favoritesTab in Tabs.OfType <FavoritesTabViewModel>())
                {
                    SelectedTab = favoritesTab;
                }
            });

            SelectSeenTab = new RelayCommand(() =>
            {
                if (SelectedTab is SeenTabViewModel)
                {
                    return;
                }
                foreach (var seenTab in Tabs.OfType <SeenTabViewModel>())
                {
                    SelectedTab = seenTab;
                }
            });
        }
 public static MvcHtmlString TabsOptions(this HtmlHelper html, TabsViewModel model)
 {
     return(html.JsonScript(model.Id + "_op", model));
 }
 public Layout()
 {
     InitializeComponent();
     DataContext = new TabsViewModel();
 }