public ViewResult Index(SalesGridDTO vals)

        {
            string defaultSort = nameof(Sales.Year);
            var    builder     = new SalesGridBuilder(HttpContext.Session, vals, defaultSort);

            var options = new SalesQueryOptions
            {
                Includes   = "Employee",
                OrderBy    = builder.CurrentRoute.SortDirection,
                PageNumber = builder.CurrentRoute.PageNumber,
                PageSize   = builder.CurrentRoute.PageSize
            };

            options.SortFilter(builder);

            SalesListViewModel vs = new SalesListViewModel
            {
                Sales    = data.Sales.List(options),
                Employee = data.Employees.List(new QueryOptions <Employee> {
                    OrderBy = e => e.FirstName
                }),
                CurrentRoute = builder.CurrentRoute,
                TotalPages   = builder.GetTotalPages(data.Sales.Count)
            };

            return(View());
        }
        public IActionResult Index(SalesGridDTO id)
        {
            ViewModel view = new ViewModel(); //declares and instantiates a new copy of the class

            view.Employees = data.Employees.List(new QueryOptions <Employee> {
                OrderBy = e => e.FirstName
            });
            //filter through EmployeeID in SalesList (if EmployeeID)
            string           defaultSortField = nameof(Sales.Year);
            SalesGridBuilder sales            = new SalesGridBuilder(HttpContext.Session, id, defaultSortField);
            var options = new SalesQueryOptions
            {
                Includes         = "Employee",
                OrderByDirection = sales.CurrentRoute.SortDirection,
                PageNumber       = sales.CurrentRoute.PageNumber,
                PageSize         = sales.CurrentRoute.PageSize
            };

            options.SortFilter(sales);
            view.SalesList    = data.Sales.List(options);
            view.CurrentRoute = sales.CurrentRoute; //sets the value for CurrentRoute
            view.TotalPages   = sales.GetTotalPages(data.Sales.Count);
            //IQueryable<Sales> sales = data.Sales; //gets list
            //if (id > 0) //if statement that filters out 0, 0 will show all employees and sales. Greater then 0 will return a specific employee
            //{
            //    sales = sales.Where(p => p.EmployeeID == id); //filters
            //}
            //view.SalesList = sales.ToList();  //this gives values to SalesList
            return(View(view));
        }
        public RedirectToActionResult Filter(string[] filter, bool clear = false)
        {
            var builder = new SalesGridBuilder(HttpContext.Session);

            if (clear)
            {
                builder.ClearFilterSegments();
            }
            else
            {
                var employee = data.Employees.Get(filter[0].ToInt());
                builder.LoadFilterSegments(filter, employee);
            }

            return(RedirectToAction("Index", builder.CurrentRoute));
        }
        public ViewResult List(SalesGridDTO values)
        {
            var builder = new SalesGridBuilder(HttpContext.Session, values, defaultSortField: nameof(Sales.Year));

            var options = new QueryOptions <Sales>
            {
                Includes         = "Employee.FullName, Year, Quarter, SalesAmount",
                OrderByDirection = builder.CurrentRoute.SortDirection,
                PageNumber       = builder.CurrentRoute.PageNumber,
                PageSize         = builder.CurrentRoute.PageSize
            };
            var vm = new ViewModel
            {
                SalesList = Data.Sales.List(options),
                Employees = Data.Employees.List(new QueryOptions <Employee>
                {
                    OrderBy = a => a.FirstName
                }),
                CurrentRoute = builder.CurrentRoute,
                TotalPages   = builder.GetTotalPages(Data.Sales.Count)
            };

            return(View(vm));
        }