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)); }
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(); }