public JsonResult SearchAccount(string field, string search, SubAccountType subType, AccountType accountType, bool?isHeader, bool?isActive, int?pageCount = null) { if (string.IsNullOrEmpty(search) && !isHeader.HasValue && !isActive.HasValue && subType == SubAccountType.Unknown && accountType == AccountType.Unknown) { return(Json(GetPageItem(null, LogicalOperator.and, DefaultSorting(), pageCount))); } var searchCriteria = new List <SearchCriteria>(); if (!string.IsNullOrEmpty(search)) { searchCriteria.Add(new SearchCriteria { Field = field, SearchText = search, FieldType = field.Contains("Balance")? typeof(decimal): typeof(string) }); } if (subType != SubAccountType.Unknown) { searchCriteria.Add(new SearchCriteria { Field = "Type", SearchText = subType.GetHashCode().ToString(), FieldType = typeof(string) }); } if (accountType != AccountType.Unknown) { searchCriteria.Add(new SearchCriteria { Field = "Classification", SearchText = accountType.GetHashCode().ToString(), FieldType = typeof(string) }); } if (isHeader.HasValue) { searchCriteria.Add(new SearchCriteria { Field = "IsHeader", SearchText = isHeader.Value.ToString().ToLower(), FieldType = typeof(bool) }); } if (isActive.HasValue) { searchCriteria.Add(new SearchCriteria { Field = "IsActive", SearchText = (!isActive.Value).ToString().ToLower(), FieldType = typeof(bool) }); } return(Json(GetPageItem(searchCriteria, LogicalOperator.and, DefaultSorting(), pageCount))); }