Example #1
0
        //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));
        }
Example #2
0
 public IActionResult Filter(OpremaFilter filter)
 {
     return(RedirectToAction(nameof(Index), new { filter = filter.ToString() }));
 }