public ActionResult Index(SearchPaymentsModel search, int page = 1)
        {
            // Return all Payments
            // If not a post-back (i.e. initial load) set the searchModel to session
            if (Request.Form.Count <= 0)
            {
                if (search.IsEmpty() && Session["SearchPaymentsModel"] != null)
                {
                    search = (SearchPaymentsModel)Session["SearchPaymentsModel"];
                }
            }

            var helper = new PaymentHelper();
            var model  = helper.GetPaymentList(search, search.ParsePage(page));

            Session["SearchPaymentsModel"] = search;

            ParseSearchDefaults(search);

            return(View(model));
        }
示例#2
0
        public PaymentListViewModel GetPaymentList(SearchPaymentsModel searchModel, int page = 1)
        {
            int pageSize = 20;

            if (page < 1)
            {
                page = 1;
            }

            IEnumerable <Payment> records = db.Payments.ToList();

            // Remove any default information
            //searchModel.ParseRouteInfo();

            if (!String.IsNullOrEmpty(searchModel.Name))
            {
                string name = searchModel.Name.ToLower();
                records = records.Where(x => x.Student.FirstName.ToLower().Contains(name) || x.Student.LastName.ToLower().Contains(name));
            }

            if (!String.IsNullOrEmpty(searchModel.ParentName))
            {
                string parentName = searchModel.ParentName.ToLower();
                records = records.SelectMany(x => x.Student.Parents).Where(y => y.Parent.FirstName.ToLower().Contains(parentName) || y.Parent.LastName.ToLower().Contains(parentName)).SelectMany(m => m.Student.Payments);
            }

            if (!String.IsNullOrEmpty(searchModel.Depositor))
            {
                string depositorName = searchModel.Depositor.ToLower();
                records = records.Where(x => x.PaidInBy.ToLower().Contains(depositorName));
            }

            if (searchModel.SlipNo.HasValue)
            {
                string slipNo = searchModel.SlipNo.ToString();
                records = records.Where(x => x.SlipNo.ToString().Contains(slipNo));
            }

            if (searchModel.Bank.HasValue)
            {
                records = records.Where(x => x.BankId == searchModel.Bank.Value);
            }

            if (searchModel.Term.HasValue)
            {
                records = records.Where(x => x.TermId == searchModel.Term.Value);
            }

            if (searchModel.ClassLevel.HasValue)
            {
                records = records.Where(x => x.ClassLevelId == searchModel.ClassLevel.Value);
            }

            if (searchModel.StartDate.HasValue)
            {
                records = records.Where(x => x.Date >= searchModel.StartDate.Value);
            }

            if (searchModel.EndDate.HasValue)
            {
                records = records.Where(x => x.Date <= searchModel.EndDate.Value);
            }

            // get only that havent been deleted
            records = records.Where(x => !x.Deleted.HasValue);

            var totalPaid = records.Sum(x => x.Amount);


            return(new PaymentListViewModel
            {
                Payments = records
                           .OrderByDescending(o => o.Date)
                           .ThenBy(o => o.ClassLevelId)
                           .Skip((page - 1) * pageSize)
                           .Take(pageSize),
                TotalPaid = totalPaid,
                SearchModel = searchModel,
                PagingInfo = new PagingInfo
                {
                    CurrentPage = page,
                    PageSize = pageSize,
                    TotalItems = records.Count()
                }
            });
        }
 private void ParseSearchDefaults(SearchPaymentsModel model)
 {
     model.Terms       = context.Terms.ToList().OrderByDescending(m => m.StartDate).ToList();
     model.ClassLevels = context.ClassLevels.ToList().OrderBy(x => x.SchoolLevel).ThenBy(o => o.Level);
     model.Banks       = context.Banks.ToList().Where(x => !x.DeActivated.HasValue).ToList();
 }