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