public void AddFilterItem(string key, IEnumerable <FilterItem> items) { if (filterCollection.ContainsKey(key)) { filterCollection[key].AddRange(items); } else { var filterItemList = new FilterItemList(); filterItemList.AddRange(items); filterCollection.Add(key, filterItemList); } }
private static FilterItemList GetQueryAttribute(object val, string key, ParameterInfo paramInfo) { var filterAttributes = new FilterItemList(); var objStr = Convert.ToString(val); try { var jobj = JObject.Parse(objStr); foreach (var item in jobj) { var value = item.Value.Value <string>(); var isDate = DateTime.TryParseExact(value, "MM/dd/yyyy HH:mm:ss", null, DateTimeStyles.None, out DateTime dateValue); if (isDate) { var dateWithMilli = item.Value.Value <DateTime>(); value = dateWithMilli.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); } var filterOperator = (FilterOperator)item.Key.GetEnumFromEnumMemberValue(typeof(FilterOperator)); if (paramInfo != null) { var correspondingValueType = paramInfo.ParameterType .GetMethods() .FirstOrDefault(m => m.Name.StartsWith(key.SnakeToCamel())) .GetParameters() .FirstOrDefault() .ParameterType; if (correspondingValueType.IsEnum) { var enumValue = value.GetEnumMemberValue(correspondingValueType); if (!string.IsNullOrEmpty(enumValue)) { value = enumValue; } } } filterAttributes.Add(new FilterItem(value, filterOperator)); } } catch (JsonReaderException) { filterAttributes.Add(new FilterItem(objStr)); } return(filterAttributes); }
public void SetFilterGroup(LocalFilterGroup localFilterGroup) { GroupId = localFilterGroup.Id; GroupName = localFilterGroup.Name; IsChecked = localFilterGroup.IsActive; foreach (var localFilter in localFilterGroup.Filters) { var filterItemModel = FilterItemList.FirstOrDefault(item => item.SettingsItemName == localFilter.Type); filterItemModel.SetFIlterItem(localFilter); } IntervalFilterItemViewModel.IsChecked = localFilterGroup.IsIntervalActive; IntervalFilterItemViewModel.StartDate = localFilterGroup.StartDate; IntervalFilterItemViewModel.EndDate = localFilterGroup.EndDate; HasChanged(false); }