public IEnumerable <FilterDescriptor> GetAllFilter(IFilterDescriptor Descriptor) { List <FilterDescriptor> filterDescriptors = new List <FilterDescriptor>(); if (Descriptor is null) { return(filterDescriptors); } string typeName = Descriptor.GetType().Name; if (typeName == nameof(FilterDescriptor)) { filterDescriptors.Add((FilterDescriptor)Descriptor); } else if (typeName == nameof(CompositeFilterDescriptor)) { foreach (var item in ((CompositeFilterDescriptor)Descriptor).FilterDescriptors) { typeName = item.GetType().Name; if (typeName == nameof(FilterDescriptor)) { filterDescriptors.Add((FilterDescriptor)item); } else if (typeName == nameof(CompositeFilterDescriptor)) { filterDescriptors.AddRange(GetAllFilter((CompositeFilterDescriptor)item)); } } } return(filterDescriptors); }
private static void MappViewFields(IFilterDescriptor f, string current, string toMap) { var type = f.GetType(); if (type.Name != "FilterDescriptor") { CompositeFilterDescriptor cfd = (CompositeFilterDescriptor)f; foreach (var item in cfd.FilterDescriptors) { MappViewFields(item, current, toMap); } } else { FilterDescriptor fd = (FilterDescriptor)f; if (fd.Member == current) { fd.Member = toMap; } if (fd.Member.ToLower().Contains("date")) { fd.Value = ((DateTime)fd.Value).ToUniversalTime(); } } }
/// <summary> /// Gets filters list. /// </summary> /// <param name="filterDescriptor">Filter's descriptor.</param> /// <returns>Filters list.</returns> private static List<FilterDescriptor> GetDescriptors(IFilterDescriptor filterDescriptor) { var descriptors = new List<FilterDescriptor>(); if (filterDescriptor.GetType() == typeof(FilterDescriptor)) { descriptors.Add(filterDescriptor as FilterDescriptor); } else { foreach (IFilterDescriptor filter in (filterDescriptor as CompositeFilterDescriptor).FilterDescriptors) { descriptors.AddRange(GetDescriptors(filter)); } } return descriptors; }