public IActionResult Index(string sortOrder, string currentFilter, string searchName, int?page) { var userID = User.FindFirstValue(ClaimTypes.NameIdentifier); ViewBag.SortOrder = sortOrder; ViewBag.NameSortParam = String.IsNullOrEmpty(sortOrder) ? "Vendor" : ""; //TODO: Add the VMs to services for DI? EntityViewModel vm = new EntityViewModel(); vm.Vendors = _vendorRepository.GetList(userID); //If vendor list is 0, then this is likely a new user. Fill the default vendor list. if (vm.Vendors.Count == 0) { _vendorRepository.CreateDefaults(userID); vm.Vendors = _vendorRepository.GetList(userID); } //If user searched for a new name, then start pagenation over. if (searchName != null) { page = 1; } else { searchName = currentFilter; } ViewBag.CurrentFilter = searchName; //If searchName entered, filter on searchName. if (searchName != null) { vm.Vendors = vm.Vendors.Where(v => v.Name == searchName).ToList(); } //Sort as instructed switch (sortOrder) { case "Vendor": vm.Vendors = vm.Vendors.OrderByDescending(v => v.Name).ToList(); break; default: vm.Vendors = vm.Vendors.OrderBy(v => v.Name).ToList(); break; } int pageSize = 10; int pageNumber = (page ?? 1); ViewBag.SinglePageVendor = vm.Vendors.ToPagedList(pageNumber, pageSize); return(View()); }
public IActionResult Index(string sortOrder, string currentFilter, string searchName, int?page) { var userID = User.FindFirstValue(ClaimTypes.NameIdentifier); ViewBag.CurrentSort = sortOrder; ViewBag.NameSortParam = String.IsNullOrEmpty(sortOrder) ? "Name" : ""; ViewBag.BalanceSortParam = sortOrder == "Balance" ? "balance_desc" : "Balance"; AccountViewModel vm = new AccountViewModel(); vm.AccountsWithBalances = GetAccountsWithBalances(userID); //TODO: May want to reconsider this placement. Could create a drag to keep pinging the DB if the user doesn't create an account. //If no accounts, this is likely a new user. Run the default builders. if (vm.AccountsWithBalances.Count == 0) { _vendorRepository.CreateDefaults(userID); _categoryRepository.CreateDefaults(userID); } //If user searched for a new name, then start pagenation over if (searchName != null) { page = 1; } else { searchName = currentFilter; } ViewBag.CurrentFilter = searchName; //If search name entered, filter on search name. if (searchName != null) { vm.AccountsWithBalances = vm.AccountsWithBalances.Where(a => a.Name == searchName).ToList(); } //Sort as instructed if (!(vm.AccountsWithBalances.Count == 0)) { switch (sortOrder) { case "Name": vm.AccountsWithBalances = vm.AccountsWithBalances.OrderByDescending(a => a.Name).ToList(); break; case "Balance": vm.AccountsWithBalances = vm.AccountsWithBalances.OrderBy(a => a.Balance).ToList(); break; case "balance_desc": vm.AccountsWithBalances = vm.AccountsWithBalances.OrderByDescending(a => a.Balance).ToList(); break; default: vm.AccountsWithBalances = vm.AccountsWithBalances.OrderBy(a => a.Name).ToList(); break; } } int pageSize = 10; int pageNumber = (page ?? 1); ViewBag.SinglePageAccount = vm.AccountsWithBalances.ToPagedList(pageNumber, pageSize); return(View()); }