public ActionResult Contracts(ContractsViewModel model) { if (ModelState.IsValid) { // Perhaps we should reset the page to 1 model.Page = 1; // Query the Contracts model = QueryContracts(model); // Store the model in the session SessionHelper.ContractsViewModel = model; } else { ModelState.AddModelError("", "The contracts View Model is not valid!!"); } return View(model); }
// P R I V A T E M E T H O D S private ContractsViewModel QueryContracts(ContractsViewModel model) { DateTime expDate = DateTime.Now.AddDays(30); Expression<Func<Contract, bool>> filter = x => (x.TraderOne.Id == model.TraderId || x.TraderTwo.Id == model.TraderId) && x.EndDate > DateTime.Now; model.ActiveContracts = _contractsRepository.Search(filter, model.Page, model.Count).Select(x => x); filter = x => (x.TraderOne.Id == model.TraderId || x.TraderTwo.Id == model.TraderId) && x.EndDate > DateTime.Now && x.EndDate <= expDate; model.ExpiringContracts = _contractsRepository.Search(filter, model.Page, model.Count).Select(x => x); filter = x => (x.TraderOne.Id == model.TraderId || x.TraderTwo.Id == model.TraderId) && x.EndDate > DateTime.Now && (x.IsTraderOneApproved == false || x.IsTraderOneApproved == false); model.PendingContracts = _contractsRepository.Search(filter, model.Page, model.Count).Select(x => x); model.MaxPage = Math.Max((int)Math.Ceiling((double)_contractsRepository.Count(filter) / model.Count), 1); return model; }