public IActionResult Index(string filter, int page = 1, int sort = 1, bool ascending = true) { int pagesize = appSettings.PageSize; var query = ctx.Certifikati.AsQueryable(); CertifikatiFilter cf = new CertifikatiFilter(); if (!string.IsNullOrWhiteSpace(filter)) { cf = CertifikatiFilter.FromString(filter); if (!cf.IsEmpty()) { if (cf.Id.HasValue) { cf.Naziv = ctx.Certifikati .Where(c => c.Id == c.Id) .Select(c => c.Naziv) .FirstOrDefault(); } query = cf.Apply(query); } } int count = query.Count(); var pagingInfo = new PagingInfo { CurrentPage = page, Sort = sort, Ascending = ascending, ItemsPerPage = pagesize, TotalItems = count }; if (page < 1) { page = 1; } else if (page > pagingInfo.TotalPages) { if (page != 1 || cf.IsEmpty()) { return(RedirectToAction(nameof(Index), new { page = pagingInfo.TotalPages, sort, ascending, filter })); } } query = ApplySort(sort, ascending, query); var certifikati = query .Skip((page - 1) * pagesize) .Take(pagesize) .ToList(); var model = new CertifikatiViewModel { certifikati = certifikati, PagingInfo = pagingInfo, Filter = cf }; return(View(model)); }
public IActionResult Filter(CertifikatiFilter filter) { return(RedirectToAction(nameof(Index), new { filter = filter.ToString() })); }