public ActionResult GetAccounts(string filter) { Func <Account, bool> searchFor = null; if (!string.IsNullOrEmpty(filter)) { searchFor = w => w.FirstName.ToLower().Contains(filter.ToLower()) || w.LastName.Contains(filter.ToLower()) || w.Email.Contains(filter.ToLower()); } else { searchFor = w => true; } AdminAccountsViewModel accounts = new AdminAccountsViewModel(); accounts.Accounts = this.administrationProvider.GetAllAccounts(searchFor); accounts.Filter = filter; return(this.PartialView("Partial/Accounts", accounts)); }
public IActionResult MainAdmin(int?card, string email, int?account, int page = 1, AccountsSortState sortOrder = AccountsSortState.AccIdAsc) { int pageSize = 10; IQueryable <Account> source = _context.Accounts.Include(x => x.Card.User); if (card != null && card != 0) { source = source.Where(x => x.CardId == card); } if (account != null && account != 0) { source = source.Where(x => x.AccountId == account); } if (email != null) { source = source.Where(x => x.Card.User.Email.Contains(email)); } switch (sortOrder) { case AccountsSortState.AccIdAsc: source = source.OrderBy(x => x.AccountId); break; case AccountsSortState.AccIdDesc: source = source.OrderByDescending(x => x.AccountId); break; case AccountsSortState.CardIdAsc: source = source.OrderBy(x => x.CardId); break; case AccountsSortState.CardIdDesc: source = source.OrderByDescending(x => x.CardId); break; case AccountsSortState.EmailAsc: source = source.OrderBy(x => x.Card.User.Email); break; case AccountsSortState.EmailDesc: source = source.OrderByDescending(x => x.Card.User.Email); break; case AccountsSortState.BalanceAsc: source = source.OrderBy(x => x.Balance); break; case AccountsSortState.BalanceDesc: source = source.OrderByDescending(x => x.Balance); break; case AccountsSortState.StatusAsc: source = source.OrderBy(x => x.IsBlocked); break; case AccountsSortState.StatusDesc: source = source.OrderByDescending(x => x.IsBlocked); break; default: source = source.OrderBy(x => x.AccountId); break; } var count = source.Count(); var items = source.Skip((page - 1) * pageSize).Take(pageSize); PageViewModel pageView = new PageViewModel(count, page, pageSize); AdminAccountsViewModel ivm = new AdminAccountsViewModel { PageViewModel = pageView, SortViewModel = new SortAccountsViewModel(sortOrder), FilterViewModel = new FilterAccountsViewModel(card, email, account), Accounts = items }; ViewBag.BlockedAccs = _context.Accounts.Where(acc => acc.IsBlocked); ViewBag.User = _context.Users.FirstOrDefault(x => x.Email == User.Identity.Name).Name; return(View("MainAdmin", ivm)); }