private void SetPreviousAndNext(int position, string filter, int sort, bool ascending) { var query = ctx.ViewDokumentInfo.AsNoTracking() .FromSql(Constants.SqlViewDokumenti); DokumentFilter df = new DokumentFilter(); if (!string.IsNullOrWhiteSpace(filter)) { df = DokumentFilter.FromString(filter); if (!df.IsEmpty()) { query = df.Apply(query); } } query = ApplySort(sort, ascending, query); if (position > 0) { ViewBag.Previous = query.Skip(position - 1).Take(1).Select(d => d.IdDokumenta).First(); } if (position < query.Count() - 1) //TO DO prenesi Count kao parametar { ViewBag.Next = query.Skip(position + 1).Take(1).Select(d => d.IdDokumenta).First(); } }
public IActionResult Index(string filter, int page = 1, int sort = 1, bool ascending = true) { int pagesize = appData.PageSize; var query = ctx.ViewDokumentInfo.AsNoTracking() .FromSql(Constants.SqlViewDokumenti); DokumentFilter df = new DokumentFilter(); if (!string.IsNullOrWhiteSpace(filter)) { df = DokumentFilter.FromString(filter); if (!df.IsEmpty()) { if (df.IdPartnera.HasValue) { df.NazPartnera = ctx.vw_Partner .Where(p => p.IdPartnera == df.IdPartnera) .Select(vp => vp.Naziv) .FirstOrDefault(); } query = df.Apply(query); } } int count = query.Count(); var pagingInfo = new PagingInfo { CurrentPage = page, Sort = sort, Ascending = ascending, ItemsPerPage = pagesize, TotalItems = count }; if (page > pagingInfo.TotalPages) { return(RedirectToAction(nameof(Index), new { page = pagingInfo.TotalPages, sort = sort, ascending = ascending })); } query = ApplySort(sort, ascending, query); var dokumenti = query .Skip((page - 1) * pagesize) .Take(pagesize) .ToList(); for (int i = 0; i < dokumenti.Count; i++) { dokumenti[i].Position = (page - 1) * pagesize + i; } var model = new DokumentiViewModel { Dokumenti = dokumenti, PagingInfo = pagingInfo, Filter = df }; return(View(model)); }