public bool UpdateRelatingFilters(ScrollLineDTO scroll, ref IList <CheckListFilter> filters, EnumTypeFilterMenu typeFilter) { if (scroll == null) { return(false); } //build lambda expression basic on active filter(linqKit) var finalPredicate = filters.Where(x => x.ActiveFilter).Aggregate( PredicateBuilder.New <krt_Naftan_orc_sapod>().And(x => x.keykrt == scroll.KEYKRT), (current, innerItemMode) => current.And(innerItemMode.FilterByField <krt_Naftan_orc_sapod>()) ); foreach (var item in filters) { item.CheckedValues = this._engage.GetGroup(PredicateExtensions.GroupPredicate <krt_Naftan_orc_sapod>(item.FieldName).Expand(), finalPredicate.Expand()).Select(x => x.ToString()); } return(true); }
public ActionResult FilterMenu(int numberScroll, int reportYear, IList <CheckListFilter> filters, EnumTypeFilterMenu typeFilter) { var findKrt = this._bussinesEngage.GetNomenclatureByNumber(numberScroll, reportYear); //update filters base on active filter new values if (this.Request.IsAjaxRequest() && this._bussinesEngage.UpdateRelatingFilters(findKrt, ref filters, typeFilter)) { //return Json(filters, JsonRequestBehavior.DenyGet); return(this.PartialView("_FilterMenu", filters)); } this.ModelState.AddModelError("Menu", @"Ошибка в работе фильтров!"); this.TempData["message"] = @"Ошибка возникла в работе фильтров!"; return(this.RedirectToAction("Index", "Scroll", new RouteValueDictionary() { { "page", 1 } })); }