// WAŻNE fromularz filtrów musi wykorzytywać metodę GET, aby można było w inych widokach nawigować za pomocą return URL--> public ViewResult List(SchoesFilterInfo schoesFilterInfo, int page = 1) { IEnumerable <SchoesModel> schoesList = repository.GetFilteredSchoesEnumerable(schoesFilterInfo); int totalItems = schoesList.Count(); schoesList = schoesList .OrderBy(schoesModel => schoesModel.SchoesModelID) .Skip((page - 1) * PageSize) .Take(PageSize); SchoesListViewModel schoesListViewModel = new SchoesListViewModel { Schoes = schoesList, SchoesFilterInfo = schoesFilterInfo, PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = PageSize, TotalItems = totalItems, } }; return(View(schoesListViewModel)); }
public PartialViewResult Filters(SchoesFilterInfo schoesFilterInfo) { SchoesFilterList schoesFilterList = new SchoesFilterList { //filtry wybrane wcześniej przez użytkownika SchoesFilterInfo = schoesFilterInfo, //lista z której będzie mógł wybrać użytkownik schoesModelUser = repository.SchoesModelUsersRepository .Select(user => user.SchoesModelUserName) .Distinct() .ToArray(), subCategory = repository.SubCategoriesRepository .Select(user => user.SubCategoryName) .Distinct() .ToArray(), destiny = repository.SchoesDestiniesRepository .Select(user => user.SchoesDestinyName) .Distinct() .ToArray(), brand = repository.BrandsRepository .Select(user => user.BrandName) .Distinct() .ToArray(), colour = repository.SchoesModelsRepository .Select(schoesPair => schoesPair.Colour) .UnnestHierarchy() .Distinct().ToArray(), soleFabric = repository.SchoesModelsRepository .Select(schoesPair => schoesPair.SoleFabric) .Distinct() .ToArray(), shankFabric = repository.SchoesModelsRepository .Select(schoesPair => schoesPair.ShankFabric) .Distinct() .ToArray(), insideFabric = repository.SchoesModelsRepository .Select(schoesPair => schoesPair.InsideFabric) .Distinct() .ToArray(), bindingMethod = repository.SchoesModelsRepository .Select(schoesPair => schoesPair.BindingMethod) .Distinct() .ToArray() }; return(PartialView(schoesFilterList)); }
public PartialViewResult AccountIcon(SchoesFilterInfo schoesFilterInfo) { bool isSignedIn = authProvider.IsSignedIn(); ViewBag.IsAuthenticated = isSignedIn; if (!isSignedIn) { return(PartialView()); } ViewBag.UserName = authProvider.GetName(); return(PartialView()); }
public SchoesModel[] GetFilteredSchoesArray(SchoesFilterInfo schoesFilterInfo) { return(GetFilteredSchoesEnumerable(schoesFilterInfo).ToArray()); }
public IEnumerable <SchoesModel> GetFilteredSchoesEnumerable(SchoesFilterInfo schoesFilterInfo) { IEnumerable <SchoesModel> schoesList = SchoesModels; if (schoesFilterInfo != null) { //------Filtr osoby dla której jest but if (schoesFilterInfo.schoesModelUser != null) { schoesList = schoesList.Where(schoesModel => schoesModel.SchoesModelUser.SchoesModelUserName.Equals(schoesFilterInfo.schoesModelUser)); } //------Filtr marki if (schoesFilterInfo.brand != null) { schoesList = schoesList.Where(schoesModel => schoesModel.Brand.BrandName.Equals(schoesFilterInfo.brand)); } //------Filtr kategorii if (schoesFilterInfo.subCategory != null) { schoesList = schoesList.Where(schoesModel => { foreach (SubCategory subCategory in schoesModel.SubCategory) { if (subCategory.SubCategoryName.Equals(schoesFilterInfo.subCategory)) { return(true); } } return(false); }); } //------Filtr przeznaczenia if (schoesFilterInfo.destiny != null) { schoesList = schoesList.Where(schoesModel => { foreach (SchoesDestiny schoesDestiny in schoesModel.SchoesDestiny) { if (schoesDestiny.SchoesDestinyName.Equals(schoesFilterInfo.destiny)) { return(true); } } return(false); }); } //filtr rozmiarów if (schoesFilterInfo.size != null) { schoesList = schoesList.Where(schoesModel => schoesModel.SizeArray.Any(availableSize => availableSize == schoesFilterInfo.size)); } //filtr kolorów if (schoesFilterInfo.size != null) { schoesList = schoesList.Where(schoesModel => schoesModel.SizeArray.Any(availableSize => availableSize == schoesFilterInfo.size)); } //Pozestałe filtry (te które w klasie schoesModel są typu int lub string) foreach (PropertyInfo filterProperty in typeof(SchoesFilterInfo).GetProperties()) { //PropertyInfo jest obiektem którego uzaleznia jedynie klasa. Aby zacągnąć obiekt //zapisany w atrybucie w danej istancji tej klasy, //trzeba wskazać tą instację. W poniższym przypadku kalsą jest SchoesFilterInfo, //a obiektem schoesFilterInfo object filterValue = filterProperty.GetValue(schoesFilterInfo); //Aby ułatwić szukanie właściwości, które nie były uwzględnione wcześniej w klasie SchoesFilterInfo //dodano atrybut typu filterAttribute. Ma on wskazywać, które właściwości można poddać standardowej //procedurze sortowania, a właściwość filtra allowCustomFiltering pozwala var filterAttribute = ((filterAttribute)filterProperty.GetCustomAttribute(typeof(filterAttribute))); if (filterValue != null && filterAttribute != null && filterAttribute.allowCustomFiltering) { schoesList = schoesList.Where(schoesModel => { foreach (PropertyInfo schoesModelProperty in typeof(SchoesModel).GetProperties()) { if (schoesModelProperty.Name.Equals(filterProperty.Name)) { object schoesModelPropertyValue = schoesModelProperty.GetValue(schoesModel); if (schoesModelPropertyValue.Equals(filterValue)) { return(true); } } } return(false); }); } } } return(schoesList); }