Exemplo n.º 1
0
        // GET: /Region/
        public ActionResult Index(string sortOrder, string searchString, string currentFilter, int? page)
        {
            ViewBag.CurrentSort = sortOrder;
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }

            ViewBag.CurrentFilter = searchString;
            User LoggedInUser = Session["LoggedUser"] as User;
            QueryBuilder qb = new QueryBuilder();
            string query = qb.QueryForLocationTableSegerationForLinq(LoggedInUser);
            var locations = db.Locations.Where(query).GroupBy(x => x.CityID).Select(group => group.FirstOrDefault());
            List<City> ct = new List<City>();
            foreach (var loc in locations)
                ct.Add(loc.City);
            var cities = ct.AsEnumerable<City>();
            query = qb.QueryForRegionFromCitiesForLinq(cities);
            var region = db.Regions.Where(query).AsQueryable();

            if (!String.IsNullOrEmpty(searchString))
            {
                region = region.Where(s => s.RegionName.ToUpper().Contains(searchString.ToUpper()));
            }

            switch (sortOrder)
            {
                case "name_desc":
                    region = region.OrderByDescending(s => s.RegionName);
                    break;
                default:
                    region = region.OrderBy(s => s.RegionName);
                    break;
            }
            int pageSize = 8;
            int pageNumber = (page ?? 1);
            return View(region.ToPagedList(pageNumber, pageSize));
        }