コード例 #1
0
        public ActionResult Index(string name, string city, string street, GridSortOptions gridSortOptions, [DefaultValue(1)] int page)
        {
            // Pobranie listy użtkowników
            var providersList = _providerRepo.GetAllServiceProviders();

            // Ograniczenie listy użtkowników do potwierdzonych dla użytkowników zalogowanych innych niż administrator
            if (!Roles.GetRolesForUser(WebSecurity.CurrentUserName).Contains("Administrator"))
            {
                providersList = providersList.Where(a => a.IsConfirmed);
            }

            // Ustawienie domyślnej kolumny sortowania
            if (string.IsNullOrWhiteSpace(gridSortOptions.Column))
            {
                gridSortOptions.Column = "Id";
            }

            // Filtrowanie po nazwie
            if (!string.IsNullOrWhiteSpace(name))
            {
                providersList = providersList.Where(a => a.Name.Contains(name));
            }

            // Filtrowanie po mieście
            if (!string.IsNullOrWhiteSpace(city))
            {
                providersList = providersList.Where(a => a.City.Contains(city));
            }

            // Filtrowanie po ulicy
            if (!string.IsNullOrWhiteSpace(street))
            {
                providersList = providersList.Where(a => a.Street.Contains(street));
            }

            var providerFilterViewModel = new ServiceProviderFilterViewModel();

            // Sortowanie listy użtkowników oraz stronicowanie
            var providerPagedList = providersList.OrderBy(gridSortOptions.Column, gridSortOptions.Direction)
                                    .AsPagination(page, 5);

            var providerListContainer = new ServiceProviderListContainerViewModel
            {
                ServiceProviderPagedList       = providerPagedList,
                ServiceProviderFilterViewModel = providerFilterViewModel,
                GridSortOptions = gridSortOptions
            };

            return(View(providerListContainer));
        }