// GET: Posoa public IActionResult Index(int page = 1, int sort = 1, bool ascending = true) { int pagesize = appData.PageSize; var query = _context.Vw_Posao .AsNoTracking(); int count = query.Count(); if (count == 0) { TempData[Constants.Message] = "Ne postoji niti jedan posao."; TempData[Constants.ErrorOccurred] = false; return(RedirectToAction(nameof(Create))); } 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 })); } System.Linq.Expressions.Expression <Func <ViewPosao, object> > orderSelector = null; switch (sort) { case 1: orderSelector = d => d.PosaoId; break; } if (orderSelector != null) { query = ascending ? query.OrderBy(orderSelector) : query.OrderByDescending(orderSelector); } var posao = query .Skip((page - 1) * pagesize) .FromSql("Select * FROM dbo.Vw_Posao") .Take(pagesize) .ToList(); var model = new PosloviViewModel { Posao = posao, PagingInfo = pagingInfo }; return(View(model)); }
//public IActionResult Index() //{ // var drzave = ctx.Drzava // .AsNoTracking() // .OrderBy(d => d.NazDrzave) // .ToList(); // return View("IndexSimple", drzave); //} public IActionResult Index(int page = 1, int sort = 1, bool ascending = true) { int pagesize = appData.PageSize; var query = ctx.Posao .AsNoTracking(); int count = query.Count(); if (count == 0) { logger.LogInformation("Ne postoji nijedna država"); TempData[Constants.Message] = "Ne postoji niti jedna država."; TempData[Constants.ErrorOccurred] = false; return(RedirectToAction(nameof(Create))); } var pagingInfo = new ViewModels.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 <Posao, object> > orderSelector = null; switch (sort) { case 1: orderSelector = d => d.Id; break; case 2: orderSelector = d => d.UslugaId; break; case 3: orderSelector = d => d.Cijena; break; case 4: orderSelector = d => d.Troskovi; break; } if (orderSelector != null) { query = ascending ? query.OrderBy(orderSelector) : query.OrderByDescending(orderSelector); } var poslovi = query.Select(p => new PosaoViewModel { Id = p.Id, Vrijeme = p.Vrijeme, UslugaNaziv = p.UslugaNavigation.Naziv, MjestoNaziv = p.MjestoNavigation.Naziv, Cijena = p.Cijena, Troskovi = p.Troskovi }) .Skip((page - 1) * pagesize) .Take(pagesize) .ToList(); var model = new PosloviViewModel { Poslovi = poslovi, PagingInfo = pagingInfo }; return(View(model)); }
public IActionResult Index(int page = 1, int sort = 1, bool ascending = true) //preslikva link koji pokazuje kada ucitamo određenu stranicu, ako nedostaje neki od podataka ovaj se broj uzima { int pagesize = appSettings.PageSize; var query = ctx.Poslovi //upit na bazu .AsNoTracking(); int count = query.Count(); //broj zapisa if (count == 0) { logger.LogInformation("Ne postoji nijedan posao"); TempData[Constants.Message] = "Ne postoji niti jedan posao"; TempData[Constants.ErrorOccurred] = false; return(RedirectToAction(nameof(Create))); } System.Linq.Expressions.Expression <Func <Poslovi, object> > orderSelector = null; switch (sort) { case 1: orderSelector = d => d.IdPoslovi; break; case 2: orderSelector = d => d.Naziv; break; case 3: orderSelector = d => d.Mjesto; break; case 4: orderSelector = d => d.IdNatječajiNavigation.Naziv; break; case 5: orderSelector = d => d.IdUslugeNavigation.NazivUsluge; break; case 6: orderSelector = d => d.VrijemeTrajanja; break; } if (orderSelector != null) { query = ascending ? //određuje je li order bi uzlazno ili silazno query.OrderBy(orderSelector) : query.OrderByDescending(orderSelector); } var poslovi = query .Select(m => new PosaoViewModel { IdPoslovi = m.IdPoslovi, Naziv = m.Naziv, Mjesto = m.Mjesto, NazivNatječaja = m.IdNatječajiNavigation.Naziv, NazivUsluge = m.IdUslugeNavigation.NazivUsluge, VrijemeTrajanja = m.VrijemeTrajanja }) .Skip((page - 1) * pagesize) // koliko podataka preskočiti, na 7.str. preskočit ćemo 6*vel.stranice .Take(pagesize) //dohvaćamo elemente .ToList(); //dobijemo listu var pagingInfo = new PagingInfo //ujedinjujemo sve informacije koje smo primili sa strane { CurrentPage = page, Sort = sort, Ascending = ascending, ItemsPerPage = pagesize, TotalItems = count }; if (page < 1) { page = 1; } else if (page > pagingInfo.TotalPages) //kada korisnik dode do zadnje stranice, radimo redirekcija na neku akciju-referencirat ćemo se na imena metoda nameof nam osigurava da se promjenom imena ne naruši ova stranica (prilikom kompajliranja javlja grešku ili otkrije stranicu) { return(RedirectToAction(nameof(Index), new { page = pagingInfo.TotalPages, sort, ascending })); //new-anonimna klasa, formira se link na novu akciju } var model = new PosloviViewModel { Poslovi = poslovi, PagingInfo = pagingInfo }; return(View(model)); }