Beispiel #1
0
 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));
        }