예제 #1
0
        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());
        }
예제 #2
0
        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());
        }