using System.Collections; using System.Collections.Generic; using System.Linq; using TINK.Model; using TINK.Model.Connector.Filter; namespace TINK.ViewModel.Settings { public class GroupFilterSettings : IGroupFilterSettings { public GroupFilterSettings(IDictionary filterDictionary = null) { FilterDictionary = filterDictionary ?? new Dictionary(); Filter = filterDictionary != null ? (IGroupFilter) new IntersectGroupFilter(FilterDictionary.Where(x => x.Value == FilterState.On).Select(x => x.Key)) : new NullGroupFilter(); } private IDictionary FilterDictionary { get; set; } private IGroupFilter Filter { get; } /// Performs filtering on response -group. public IEnumerable DoFilter(IEnumerable filter = null) => Filter.DoFilter(filter); public FilterState this[string key] { get => FilterDictionary[key]; set => FilterDictionary[key] = value; } public ICollection Keys => FilterDictionary.Keys; public ICollection Values => FilterDictionary.Values; public int Count => FilterDictionary.Count; public bool IsReadOnly => true; public void Add(string key, FilterState value) { throw new System.NotImplementedException(); } public void Add(KeyValuePair item) { throw new System.NotImplementedException(); } public void Clear() { throw new System.NotImplementedException(); } public bool Contains(KeyValuePair item) => FilterDictionary.Contains(item); public bool ContainsKey(string key) => FilterDictionary.ContainsKey(key); public void CopyTo(KeyValuePair[] array, int arrayIndex) => FilterDictionary.CopyTo(array, arrayIndex); public IEnumerator> GetEnumerator() => FilterDictionary.GetEnumerator(); public bool Remove(string key) { throw new System.NotImplementedException(); } public bool Remove(KeyValuePair item) { throw new System.NotImplementedException(); } public bool TryGetValue(string key, out FilterState value) => FilterDictionary.TryGetValue(key, out value); IEnumerator IEnumerable.GetEnumerator() => FilterDictionary.GetEnumerator(); } }