using System.Collections; using System.Collections.Generic; using System.Linq; using TINK.Model; using TINK.Model.Connector.Filter; namespace TINK.ViewModel.Map { public class GroupFilterMapPage : IGroupFilterMapPage { public GroupFilterMapPage(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 IGroupFilter Filter { get; } /// Gets the active filters. /// Filter collection to get group from. /// List of active filters. /// Rename to ToFilterList public IList GetGroup() { return this.Where(x => x.Value == FilterState.On).Select(x => x.Key).ToList(); } /// Performs filtering on response-group. public IEnumerable DoFilter(IEnumerable filter = null) => Filter.DoFilter(filter); private IDictionary FilterDictionary { get; } 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(); } }