public async Task <IActionResult> Index(PaymentsIndexModelView model, long?branchId, int pageTo = 1) { var payments = _db.Payments.AsQueryable(); Branch branch = new Branch(); DateTime now = PaymentsIndexModelView.GetNowTime(); if (User.IsInRole("admin")) { Employee empl = await _userManager.GetUserAsync(User); branch = _db.Branches.FirstOrDefault(b => b.AdminId == empl.Id); if (branch is null) { return(BadRequest()); } branchId = branch.Id; payments = payments.Where(p => p.ClientsMembership.Client.Group.BranchId == branchId); } else if (!_db.Branches.Any(p => p.Id == branchId)) { return(NotFound()); } else { branch = await _db.Branches.FirstOrDefaultAsync(b => b.Id == branchId); payments = payments.Where(p => p.ClientsMembership.Client.Group.BranchId == branchId); } if (payments.Count() > pageTo * model.PaymentsLength) { model.IsNextPage = true; } if (String.IsNullOrEmpty(model.FilterByName) && model.SicknessId is null && model.SortSelect == SortPaymentsBy.None && model.CoachId is null && (model.From == now || model.To == now)) { model = new PaymentsIndexModelView() { Payments = await payments.Skip((pageTo - 1) *model.PaymentsLength) .Take(model.PaymentsLength).OrderByDescending(p => p.CateringDate).ToListAsync() }; }
private async Task <PaymentsIndexModelView> SortPayments(PaymentsIndexModelView model, int pageTo, long branchId) { var payments = GetFilteredByDate(model.From, model.To, branchId); switch (model.SortSelect) { case SortPaymentsBy.None: return(model); case SortPaymentsBy.Memberships: if (model.SortReverse) { model.Payments = await payments.OrderByDescending(p => p.ClientsMembership.MembershipId).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } else { model.Payments = await payments.OrderBy(p => p.ClientsMembership.MembershipId).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } break; case SortPaymentsBy.Price: if (model.SortReverse) { model.Payments = await payments.OrderByDescending(p => (p.ClientsMembership.Membership.Price - p.Debts)).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } else { model.Payments = await payments.OrderBy(p => (p.ClientsMembership.Membership.Price - p.Debts)).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } break; case SortPaymentsBy.Group: if (model.SortReverse) { model.Payments = await payments.OrderByDescending(p => p.ClientsMembership.Client.GroupId).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } else { model.Payments = await payments.OrderBy(p => p.ClientsMembership.Client.GroupId).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } break; case SortPaymentsBy.Comment: if (model.SortReverse) { model.Payments = await payments.OrderByDescending(p => p.Comment).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } else { model.Payments = await payments.OrderBy(p => p.Comment).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } break; case SortPaymentsBy.Sickness: if (model.SortReverse) { model.Payments = await payments.OrderByDescending(p => p.ClientsMembership.Client.Sickness).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } else { model.Payments = await payments.OrderBy(p => p.ClientsMembership.Client.Sickness).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } break; case SortPaymentsBy.Debtors: if (model.SortReverse) { model.Payments = await payments.OrderByDescending(p => p.ClientsMembership.Client.Balance).Where(p => p.ClientsMembership.Client.Balance < 0).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } else { model.Payments = await payments.OrderBy(p => p.ClientsMembership.Client.Balance).Where(p => p.ClientsMembership.Client.Balance < 0).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } break; case SortPaymentsBy.Debts: if (model.SortReverse) { model.Payments = await payments.OrderByDescending(p => p.Debts).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } else { model.Payments = await payments.OrderBy(p => p.Debts).Skip((pageTo - 1) * model.PaymentsLength) .Take(model.PaymentsLength).ToListAsync(); } break; default: break; } return(model); }