1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-31 15:36:07 +00:00

Filtres monstres & sorts

This commit is contained in:
Yan Maniez 2018-10-14 23:46:14 +02:00
parent 0792aed7cc
commit 4512df905e

View file

@ -1,5 +1,6 @@
using AideDeJeu.Tools; using AideDeJeu.Tools;
using AideDeJeuLib; using AideDeJeuLib;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
@ -201,37 +202,37 @@ namespace AideDeJeu.ViewModels
} }
} }
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) //public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
{ //{
return await Task.Run(() => // return await Task.Run(() =>
{ // {
var levelComparer = new LevelComparer(); // var levelComparer = new LevelComparer();
var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? ""; // var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? "";
var niveauMin = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey ?? "0"; // var niveauMin = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey ?? "0";
var niveauMax = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey ?? "9"; // var niveauMax = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey ?? "9";
var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? ""; // var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? "";
var ritual = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? ""; // var ritual = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? ""; // var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
//token.ThrowIfCancellationRequested(); // //token.ThrowIfCancellationRequested();
return items.Where(item => // return items.Where(item =>
{ // {
var spell = item as Spell; // var spell = item as Spell;
return // return
levelComparer.Compare(spell.Level, niveauMin) >= 0 && // levelComparer.Compare(spell.Level, niveauMin) >= 0 &&
levelComparer.Compare(spell.Level, niveauMax) <= 0 && // levelComparer.Compare(spell.Level, niveauMax) <= 0 &&
spell.Type.ToLower().Contains(ecole.ToLower()) && // spell.Type.ToLower().Contains(ecole.ToLower()) &&
(spell.Source != null && spell.Source.Contains(source)) && // (spell.Source != null && spell.Source.Contains(source)) &&
(spell.Classes != null && spell.Classes.Contains(classe)) && // (spell.Classes != null && spell.Classes.Contains(classe)) &&
(string.IsNullOrEmpty(ritual) || (spell.Ritual != null && spell.Ritual.Contains(ritual))) && // (string.IsNullOrEmpty(ritual) || (spell.Ritual != null && spell.Ritual.Contains(ritual))) &&
( // (
(Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) || // (Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) // (Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
); // );
}).OrderBy(spell => spell.Name) // }).OrderBy(spell => spell.Name)
.AsEnumerable(); // .AsEnumerable();
}, token); // }, token);
} //}
public abstract List<KeyValuePair<string, string>> Classes { get; } public abstract List<KeyValuePair<string, string>> Classes { get; }
@ -247,6 +248,11 @@ namespace AideDeJeu.ViewModels
public class VFSpellFilterViewModel : SpellFilterViewModel public class VFSpellFilterViewModel : SpellFilterViewModel
{ {
public override Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken cancellationToken = default)
{
throw new System.NotImplementedException();
}
public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>() public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>()
{ {
new KeyValuePair<string, string>("", "Toutes" ), new KeyValuePair<string, string>("", "Toutes" ),
@ -298,11 +304,38 @@ namespace AideDeJeu.ViewModels
new KeyValuePair<string, string>("", "Toutes"), new KeyValuePair<string, string>("", "Toutes"),
new KeyValuePair<string, string>("(SRD", "SRD"), new KeyValuePair<string, string>("(SRD", "SRD"),
}; };
} }
public class VOSpellFilterViewModel : SpellFilterViewModel public class VOSpellFilterViewModel : SpellFilterViewModel
{ {
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
{
return await Task.Run(() =>
{
var levelComparer = new LevelComparer();
var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? "";
var niveauMin = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey ?? "0";
var niveauMax = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey ?? "9";
var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? "";
var ritual = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
using (var context = new StoreViewModel.AideDeJeuContext())
{
return context.SpellsVO.Where(spell =>
levelComparer.Compare(spell.Level, niveauMin) >= 0 &&
levelComparer.Compare(spell.Level, niveauMax) <= 0 &&
spell.Type.ToLower().Contains(ecole.ToLower()) &&
(spell.Source != null && spell.Source.Contains(source)) &&
(spell.Classes != null && spell.Classes.Contains(classe)) &&
(string.IsNullOrEmpty(ritual) || (spell.Ritual != null && spell.Ritual.Contains(ritual))) &&
(
(Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)).OrderBy(spell => spell.Name).ToList();
}
}, token);
}
public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>() public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>()
{ {
new KeyValuePair<string, string>("", "All" ), new KeyValuePair<string, string>("", "All" ),
@ -358,6 +391,34 @@ namespace AideDeJeu.ViewModels
public class HDSpellFilterViewModel : SpellFilterViewModel public class HDSpellFilterViewModel : SpellFilterViewModel
{ {
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
{
return await Task.Run(() =>
{
var levelComparer = new LevelComparer();
var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? "";
var niveauMin = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey ?? "0";
var niveauMax = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey ?? "9";
var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? "";
var ritual = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
using (var context = new StoreViewModel.AideDeJeuContext())
{
return context.SpellsHD.Where(spell =>
levelComparer.Compare(spell.Level, niveauMin) >= 0 &&
levelComparer.Compare(spell.Level, niveauMax) <= 0 &&
spell.Type.ToLower().Contains(ecole.ToLower()) &&
(spell.Source != null && spell.Source.Contains(source)) &&
(spell.Classes != null && spell.Classes.Contains(classe)) &&
(string.IsNullOrEmpty(ritual) || (spell.Ritual != null && spell.Ritual.Contains(ritual))) &&
(
(Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)).OrderBy(spell => spell.Name).ToList();
}
}, token);
}
public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>() public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>()
{ {
new KeyValuePair<string, string>("", "Toutes" ), new KeyValuePair<string, string>("", "Toutes" ),
@ -440,49 +501,49 @@ namespace AideDeJeu.ViewModels
} }
} }
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) //public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
{ //{
return await Task.Run(() => // return await Task.Run(() =>
{ // {
var powerComparer = new PowerComparer(); // var powerComparer = new PowerComparer();
//var category = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Category).SelectedKey ?? ""; // //var category = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Category).SelectedKey ?? "";
var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? ""; // var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? "";
//token.ThrowIfCancellationRequested(); // //token.ThrowIfCancellationRequested();
var minPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPower).SelectedKey ?? "0 (0 PX)"; // var minPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPower).SelectedKey ?? "0 (0 PX)";
//token.ThrowIfCancellationRequested(); // //token.ThrowIfCancellationRequested();
var maxPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPower).SelectedKey ?? "30 (155000 PX)"; // var maxPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPower).SelectedKey ?? "30 (155000 PX)";
//token.ThrowIfCancellationRequested(); // //token.ThrowIfCancellationRequested();
var size = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Size).SelectedKey ?? ""; // var size = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Size).SelectedKey ?? "";
//token.ThrowIfCancellationRequested(); // //token.ThrowIfCancellationRequested();
//var legendary = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Legendary).SelectedKey ?? ""; // //var legendary = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Legendary).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? ""; // var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
token.ThrowIfCancellationRequested(); // token.ThrowIfCancellationRequested();
return items.Where(item => // return items.Where(item =>
{ // {
var monster = item as Monster; // var monster = item as Monster;
return // return
monster != null && // monster != null &&
monster.Type.Contains(type) && // monster.Type.Contains(type) &&
(string.IsNullOrEmpty(size) || monster.Size.Equals(size)) && // (string.IsNullOrEmpty(size) || monster.Size.Equals(size)) &&
(string.IsNullOrEmpty(source) || (monster.Source != null && monster.Source.Contains(source))) && // (string.IsNullOrEmpty(source) || (monster.Source != null && monster.Source.Contains(source))) &&
powerComparer.Compare(monster.Challenge, minPower) >= 0 && // powerComparer.Compare(monster.Challenge, minPower) >= 0 &&
powerComparer.Compare(monster.Challenge, maxPower) <= 0 && // powerComparer.Compare(monster.Challenge, maxPower) <= 0 &&
( // (
(Helpers.RemoveDiacritics(monster.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) || // (Helpers.RemoveDiacritics(monster.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(monster.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) // (Helpers.RemoveDiacritics(monster.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
); // );
}) // })
.OrderBy(monster => monster.Name) // .OrderBy(monster => monster.Name)
.AsEnumerable(); // .AsEnumerable();
}, token); // }, token);
} //}
public abstract List<KeyValuePair<string, string>> Categories { get; } public abstract List<KeyValuePair<string, string>> Categories { get; }
@ -500,6 +561,11 @@ namespace AideDeJeu.ViewModels
public class VFMonsterFilterViewModel : MonsterFilterViewModel public class VFMonsterFilterViewModel : MonsterFilterViewModel
{ {
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
{
throw new System.Exception();
}
public override List<KeyValuePair<string, string>> Categories { get; } = new List<KeyValuePair<string, string>>() public override List<KeyValuePair<string, string>> Categories { get; } = new List<KeyValuePair<string, string>>()
{ {
new KeyValuePair<string, string>("", "Toutes" ), new KeyValuePair<string, string>("", "Toutes" ),
@ -587,6 +653,38 @@ namespace AideDeJeu.ViewModels
public class VOMonsterFilterViewModel : MonsterFilterViewModel public class VOMonsterFilterViewModel : MonsterFilterViewModel
{ {
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
{
return await Task.Run(() =>
{
var powerComparer = new PowerComparer();
var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? "";
var minPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPower).SelectedKey ?? "0 (0 PX)";
var maxPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPower).SelectedKey ?? "30 (155000 PX)";
var size = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Size).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
token.ThrowIfCancellationRequested();
using (var context = new StoreViewModel.AideDeJeuContext())
{
return context.MonstersVO.Where(monster =>
monster != null &&
monster.Type.Contains(type) &&
(string.IsNullOrEmpty(size) || monster.Size.Equals(size)) &&
(string.IsNullOrEmpty(source) || (monster.Source != null && monster.Source.Contains(source))) &&
powerComparer.Compare(monster.Challenge, minPower) >= 0 &&
powerComparer.Compare(monster.Challenge, maxPower) <= 0 &&
(
(Helpers.RemoveDiacritics(monster.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(monster.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)
).OrderBy(monster => monster.Name).ToListAsync();
}
}, token);
}
public override List<KeyValuePair<string, string>> Categories { get; } = new List<KeyValuePair<string, string>>() public override List<KeyValuePair<string, string>> Categories { get; } = new List<KeyValuePair<string, string>>()
{ {
new KeyValuePair<string, string>("", "Toutes" ), new KeyValuePair<string, string>("", "Toutes" ),
@ -674,6 +772,37 @@ namespace AideDeJeu.ViewModels
public class HDMonsterFilterViewModel : MonsterFilterViewModel public class HDMonsterFilterViewModel : MonsterFilterViewModel
{ {
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
{
return await Task.Run(() =>
{
var powerComparer = new PowerComparer();
var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? "";
var minPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPower).SelectedKey ?? "0 (0 PX)";
var maxPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPower).SelectedKey ?? "30 (155000 PX)";
var size = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Size).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
token.ThrowIfCancellationRequested();
using (var context = new StoreViewModel.AideDeJeuContext())
{
return context.MonstersHD.Where(monster =>
monster != null &&
monster.Type.Contains(type) &&
(string.IsNullOrEmpty(size) || monster.Size.Equals(size)) &&
(string.IsNullOrEmpty(source) || (monster.Source != null && monster.Source.Contains(source))) &&
powerComparer.Compare(monster.Challenge, minPower) >= 0 &&
powerComparer.Compare(monster.Challenge, maxPower) <= 0 &&
(
(Helpers.RemoveDiacritics(monster.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(monster.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)
).OrderBy(monster => monster.Name).ToListAsync();
}
}, token);
}
public override List<KeyValuePair<string, string>> Categories { get; } = new List<KeyValuePair<string, string>>() public override List<KeyValuePair<string, string>> Categories { get; } = new List<KeyValuePair<string, string>>()
{ {
new KeyValuePair<string, string>("", "Toutes" ), new KeyValuePair<string, string>("", "Toutes" ),