//public IActionResult Index() //{ // var oprema = ctx.Oprema // .AsNoTracking() // .OrderBy(o => o.Naziv) // .ToList(); //return View("SimpleIndex", oprema); //} public IActionResult Index(string filter, int page = 1, int sort = 1, bool ascending = true) { int pagesize = appSettings.PageSize; var query = ctx.Oprema .AsNoTracking(); int count = query.Count(); OpremaFilter of = new OpremaFilter(); if (!string.IsNullOrWhiteSpace(filter)) { of = OpremaFilter.FromString(filter); if (!of.IsEmpty()) { query = of.Apply(query); } } var pagingInfo = new PagingInfo { CurrentPage = page, Sort = sort, Ascending = ascending, ItemsPerPage = pagesize, TotalItems = count }; if (page < 1) { page = 1; } else if (page > pagingInfo.TotalPages) { return(RedirectToAction(nameof(Index), new { page = pagingInfo.TotalPages, sort, ascending })); } System.Linq.Expressions.Expression <Func <Oprema, object> > orderSelector = null; switch (sort) { case 1: orderSelector = o => o.Naziv; break; case 2: orderSelector = o => o.KupovnaVrijednost; break; case 3: orderSelector = o => o.KnjigovodstvenaVrijednost; break; case 4: orderSelector = o => o.VrijemeAmortizacije; break; } if (orderSelector != null) { query = ascending ? query.OrderBy(orderSelector) : query.OrderByDescending(orderSelector); } var oprema = query .Skip((page - 1) * pagesize) .Take(pagesize) .ToList(); var model = new OpremaViewModel { Oprema = oprema, PagingInfo = pagingInfo }; return(View(model)); }
public IActionResult Filter(OpremaFilter filter) { return(RedirectToAction(nameof(Index), new { filter = filter.ToString() })); }