Exemple #1
0
        // 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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        public PartialViewResult AccountIcon(SchoesFilterInfo schoesFilterInfo)
        {
            bool isSignedIn = authProvider.IsSignedIn();

            ViewBag.IsAuthenticated = isSignedIn;
            if (!isSignedIn)
            {
                return(PartialView());
            }
            ViewBag.UserName = authProvider.GetName();

            return(PartialView());
        }
Exemple #4
0
 public SchoesModel[] GetFilteredSchoesArray(SchoesFilterInfo schoesFilterInfo)
 {
     return(GetFilteredSchoesEnumerable(schoesFilterInfo).ToArray());
 }
Exemple #5
0
        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);
        }