public SortPaymentsViewModel(PaymentsSortState sortOrder) { AccIdSort = sortOrder == PaymentsSortState.AccIdAsc ? PaymentsSortState.AccIdDesc : PaymentsSortState.AccIdAsc; PaymentIdSort = sortOrder == PaymentsSortState.PaymentIdAsc ? PaymentsSortState.PaymentIdDesc : PaymentsSortState.PaymentIdAsc; GoalSort = sortOrder == PaymentsSortState.GoalAsc ? PaymentsSortState.GoalDesc : PaymentsSortState.GoalAsc; AmountSort = sortOrder == PaymentsSortState.AmountAsc ? PaymentsSortState.AmountDesc : PaymentsSortState.AmountAsc; DateSort = sortOrder == PaymentsSortState.DateAsc ? PaymentsSortState.DateDesc : PaymentsSortState.DateAsc; Current = sortOrder; }
public IActionResult Main(int?payment, string goal, int?account, string date, int page = 1, PaymentsSortState sortOrder = PaymentsSortState.PaymentIdAsc) { int pageSize = 5; IQueryable <Payment> source = _context.Payments.Include(x => x.Goal).Include(x => x.Account.Card.User).Where(pay => pay.Account.Card.User.Email == User.Identity.Name); if (payment != null && payment != 0) { source = source.Where(x => x.PaymentId == payment); } if (account != null && account != 0) { source = source.Where(x => x.AccountId == account); } if (goal != null) { source = source.Where(x => x.Goal.GoalName.Contains(goal)); } if (date != null) { source = source.Where(x => x.Date.Contains(date)); } switch (sortOrder) { case PaymentsSortState.PaymentIdAsc: source = source.OrderBy(x => x.PaymentId); break; case PaymentsSortState.PaymentIdDesc: source = source.OrderByDescending(x => x.PaymentId); break; case PaymentsSortState.AccIdAsc: source = source.OrderBy(x => x.AccountId); break; case PaymentsSortState.AccIdDesc: source = source.OrderByDescending(x => x.AccountId); break; case PaymentsSortState.GoalAsc: source = source.OrderBy(x => x.Goal.GoalName); break; case PaymentsSortState.GoalDesc: source = source.OrderByDescending(x => x.Goal.GoalName); break; case PaymentsSortState.AmountAsc: source = source.OrderBy(x => x.Amount); break; case PaymentsSortState.AmountDesc: source = source.OrderByDescending(x => x.Amount); break; case PaymentsSortState.DateAsc: source = source.OrderBy(x => DateTime.Parse(x.Date).Date); break; case PaymentsSortState.DateDesc: source = source.OrderByDescending(x => DateTime.Parse(x.Date).Date); break; default: source = source.OrderBy(x => x.PaymentId); break; } var count = source.Count(); var items = source.Skip((page - 1) * pageSize).Take(pageSize); PageViewModel pageView = new PageViewModel(count, page, pageSize); UserPaymentsViewModel ivm = new UserPaymentsViewModel { PageViewModel = pageView, SortViewModel = new SortPaymentsViewModel(sortOrder), FilterViewModel = new FilterPaymentsViewModel(goal, date, account, payment), Payments = items }; ViewBag.User = _context.Users.FirstOrDefault(x => x.Email == User.Identity.Name).Name; return(View("Main", ivm)); }