From f1ee0e383317e1f7444d39a41337ab2676b4e05e Mon Sep 17 00:00:00 2001 From: Yan Maniez Date: Sun, 7 Oct 2018 01:41:21 +0200 Subject: [PATCH] =?UTF-8?q?Filtre=20am=C3=A9lior=C3=A9,=20=C3=A0=20g=C3=A9?= =?UTF-8?q?n=C3=A9raliser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AideDeJeu/ViewModels/FilterViewModel.cs | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs index 66adaf61..05b577ce 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs @@ -27,6 +27,18 @@ namespace AideDeJeu.ViewModels } } + public bool MatchSearch(Item item) + { + return + Helpers.RemoveDiacritics(item.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()) || + Helpers.RemoveDiacritics(item.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()); + } + + public bool MatchContains(string itemValue, string filterValue) + { + return string.IsNullOrEmpty(filterValue) || (itemValue != null && itemValue.ToLower().Contains(filterValue.ToLower())); + } + protected void RegisterFilters() { foreach (var filter in Filters) @@ -870,22 +882,16 @@ namespace AideDeJeu.ViewModels var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? ""; var rarity = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Rarity).SelectedKey ?? ""; var attunement = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Attunement).SelectedKey ?? ""; - //token.ThrowIfCancellationRequested(); return items.Where(item => { var magicitem = item as MagicItem; - return magicitem != null && - magicitem.Type.ToLower().Contains(type.ToLower()) && - (string.IsNullOrEmpty(rarity) || (magicitem.Rarity != null && magicitem.Rarity.ToLower().Contains(rarity.ToLower()))) && - (string.IsNullOrEmpty(attunement) || (magicitem.Attunement != null && magicitem.Attunement.ToLower().Contains(attunement.ToLower()))) && - //priceComparer.Compare(equipment.Price, minPrice) >= 0 && - //priceComparer.Compare(equipment.Price, maxPrice) <= 0 && - ( - (Helpers.RemoveDiacritics(magicitem.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) || - (Helpers.RemoveDiacritics(magicitem.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) - ); - }).OrderBy(eq => eq.Name) - .AsEnumerable(); + if (magicitem == null) return false; + var matchType = MatchContains(magicitem.Type, type); + var matchRarity = MatchContains(magicitem.Rarity, rarity); + var matchAttunement = MatchContains(magicitem.Attunement, attunement); + var matchSearch = MatchSearch(magicitem); + return matchType && matchRarity && matchAttunement && matchSearch; + }).OrderBy(eq => eq.Name).AsEnumerable(); }, token); }