diff --git a/AideDeJeu/AideDeJeu.Android/NativeAPI.cs b/AideDeJeu/AideDeJeu.Android/NativeAPI.cs index cd68568d..56c34d96 100644 --- a/AideDeJeu/AideDeJeu.Android/NativeAPI.cs +++ b/AideDeJeu/AideDeJeu.Android/NativeAPI.cs @@ -29,10 +29,17 @@ namespace AideDeJeu.Droid public async Task GetDatabasePathAsync(string databaseName) { - if (await CheckDatabaseVersionAsync(databaseName)) + try { - await CopyOldToNewFileAsync(databaseName, "db"); - await CopyOldToNewFileAsync(databaseName, "ver"); + if (await CheckDatabaseVersionAsync(databaseName)) + { + await CopyOldToNewFileAsync(databaseName, "db"); + await CopyOldToNewFileAsync(databaseName, "ver"); + } + } + catch + { + } return GetNewFilePath(databaseName, "db"); } diff --git a/AideDeJeu/AideDeJeu.Android/Resources/Resource.designer.cs b/AideDeJeu/AideDeJeu.Android/Resources/Resource.designer.cs index 39f1b71d..8a47c656 100644 --- a/AideDeJeu/AideDeJeu.Android/Resources/Resource.designer.cs +++ b/AideDeJeu/AideDeJeu.Android/Resources/Resource.designer.cs @@ -1,11 +1,11 @@ #pragma warning disable 1591 //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. // //------------------------------------------------------------------------------ diff --git a/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs b/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs index 604c40e9..19384067 100644 --- a/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs +++ b/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs @@ -25,10 +25,17 @@ namespace AideDeJeu.UWP public async Task GetDatabasePathAsync(string databaseName) { - if (await CheckDatabaseVersionAsync(databaseName)) + try { - await CopyOldToNewFileAsync(databaseName, "db"); - await CopyOldToNewFileAsync(databaseName, "ver"); + if (await CheckDatabaseVersionAsync(databaseName)) + { + await CopyOldToNewFileAsync(databaseName, "db"); + await CopyOldToNewFileAsync(databaseName, "ver"); + } + } + catch + { + } return GetNewFilePath(databaseName, "db"); } diff --git a/AideDeJeu/AideDeJeu/ViewModels/DeepSearchViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/DeepSearchViewModel.cs index a926abf4..dda95666 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/DeepSearchViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/DeepSearchViewModel.cs @@ -59,62 +59,70 @@ namespace AideDeJeu.ViewModels public async Task> DeepSearchAllItemsAsync(string searchText) { - using (var context = await StoreViewModel.GetLibraryContextAsync()) + try { - var primary = await context.Items. - Where(item => EF.Functions.Like(item.Name, $"%{searchText}%")). - Select(item => new SearchedItem() { Item = item, Preview = item.ParentName != null ? $"> {item.ParentName}" : "" }). - ToListAsync(); - var secondary = await context.Items. - Where(item => EF.Functions.Like(item.Markdown, $"%{searchText}%")). - Select(item => new SearchedItem() - { - Item = item, Preview = (item.ParentName != null ? $"> {item.ParentName} > " : "") + GetPreview(item.Markdown, searchText) - }).ToListAsync(); - //var primary = await context.Items. - // Where(item => item.Name.Contains(searchText)). - // Select(item => new SearchedItem() { Item = item, Preview = item.Name }). - // ToListAsync(); - //var secondary = await context.Items. - // Where(item => item.Markdown.Contains(searchText)). - // Select(item => new SearchedItem() + using (var context = await StoreViewModel.GetLibraryContextAsync()) + { + var primary = await context.Items. + Where(item => EF.Functions.Like(item.Name, $"%{searchText}%")). + Select(item => new SearchedItem() { Item = item, Preview = item.ParentName != null ? $"> {item.ParentName}" : "" }). + ToListAsync(); + var secondary = await context.Items. + Where(item => EF.Functions.Like(item.Markdown, $"%{searchText}%")). + Select(item => new SearchedItem() + { + Item = item, + Preview = (item.ParentName != null ? $"> {item.ParentName} > " : "") + GetPreview(item.Markdown, searchText) + }).ToListAsync(); + //var primary = await context.Items. + // Where(item => item.Name.Contains(searchText)). + // Select(item => new SearchedItem() { Item = item, Preview = item.Name }). + // ToListAsync(); + //var secondary = await context.Items. + // Where(item => item.Markdown.Contains(searchText)). + // Select(item => new SearchedItem() + // { + // Item = item, + // Preview = GetPreview(item.Markdown, searchText) + // }).ToListAsync(); + primary.AddRange(secondary); + return primary.ToList(); + } + + + + //List primaryItems = new List(); + //List secondaryItems = new List(); + //var cleanSearchText = Tools.Helpers.RemoveDiacritics(searchText ?? string.Empty).ToLower(); + //foreach (var item in Store._AllItems) + //{ + // var name = item.Value.Name; + // var cleanName = Tools.Helpers.RemoveDiacritics(name).ToLower(); + // if (cleanName.Contains(cleanSearchText)) // { - // Item = item, - // Preview = GetPreview(item.Markdown, searchText) - // }).ToListAsync(); - primary.AddRange(secondary); - return primary.ToList(); + // primaryItems.Add(new SearchedItem() { Item = item.Value, Preview = name }); + // } + // else + // { + // var markdown = item.Value.Markdown; + // var cleanMarkdown = Tools.Helpers.RemoveDiacritics(markdown).ToLower(); + // if (cleanMarkdown.Contains(cleanSearchText)) + // { + // int position = cleanMarkdown.IndexOf(cleanSearchText); + // int startPosition = Math.Max(0, position - 30); + // int endPosition = Math.Min(markdown.Length, position + searchText.Length + 30); + // var preview = markdown.Substring(startPosition, endPosition - startPosition - 1); + // secondaryItems.Add(new SearchedItem() { Item = item.Value, Preview = preview }); + // } + // } + //} + //primaryItems.AddRange(secondaryItems); + //return primaryItems; + } + catch + { + return new List(); } - - - - //List primaryItems = new List(); - //List secondaryItems = new List(); - //var cleanSearchText = Tools.Helpers.RemoveDiacritics(searchText ?? string.Empty).ToLower(); - //foreach (var item in Store._AllItems) - //{ - // var name = item.Value.Name; - // var cleanName = Tools.Helpers.RemoveDiacritics(name).ToLower(); - // if (cleanName.Contains(cleanSearchText)) - // { - // primaryItems.Add(new SearchedItem() { Item = item.Value, Preview = name }); - // } - // else - // { - // var markdown = item.Value.Markdown; - // var cleanMarkdown = Tools.Helpers.RemoveDiacritics(markdown).ToLower(); - // if (cleanMarkdown.Contains(cleanSearchText)) - // { - // int position = cleanMarkdown.IndexOf(cleanSearchText); - // int startPosition = Math.Max(0, position - 30); - // int endPosition = Math.Min(markdown.Length, position + searchText.Length + 30); - // var preview = markdown.Substring(startPosition, endPosition - startPosition - 1); - // secondaryItems.Add(new SearchedItem() { Item = item.Value, Preview = preview }); - // } - // } - //} - //primaryItems.AddRange(secondaryItems); - //return primaryItems; } diff --git a/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs index 9673b4aa..eb19bd61 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs @@ -317,19 +317,26 @@ namespace AideDeJeu.ViewModels 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 = await StoreViewModel.GetLibraryContextAsync()) + try { - 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(); + using (var context = await StoreViewModel.GetLibraryContextAsync()) + { + 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(); + } + } + catch + { + return new List(); } } @@ -397,19 +404,26 @@ namespace AideDeJeu.ViewModels 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 = await StoreViewModel.GetLibraryContextAsync()) + try { - 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(); + using (var context = await StoreViewModel.GetLibraryContextAsync()) + { + 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(); + } + } + catch + { + return new List(); } } @@ -658,22 +672,28 @@ namespace AideDeJeu.ViewModels var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? ""; token.ThrowIfCancellationRequested(); - using (var context = await StoreViewModel.GetLibraryContextAsync()) + try { - 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).ToList(); + using (var context = await StoreViewModel.GetLibraryContextAsync()) + { + 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).ToList(); + } + } + catch + { + return new List(); } - } public override List> Categories { get; } = new List>() @@ -774,22 +794,28 @@ namespace AideDeJeu.ViewModels var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? ""; token.ThrowIfCancellationRequested(); - using (var context = await StoreViewModel.GetLibraryContextAsync()) + try { - 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).ToList(); + using (var context = await StoreViewModel.GetLibraryContextAsync()) + { + 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).ToList(); + } + } + catch + { + return new List(); } - } public override List> Categories { get; } = new List>() { @@ -907,18 +933,25 @@ namespace AideDeJeu.ViewModels var minPrice = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPrice).SelectedKey ?? "0 pc"; var maxPrice = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPrice).SelectedKey ?? "1 000 000 po"; - using (var context = await GetLibraryContextAsync()) + try { - return context.Equipments.Where(equipment => - equipment.Type.ToLower().Contains(type.ToLower()) && - priceComparer.Compare(equipment.Price, minPrice) >= 0 && - priceComparer.Compare(equipment.Price, maxPrice) <= 0 && - ( - (Helpers.RemoveDiacritics(equipment.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) || - (Helpers.RemoveDiacritics(equipment.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) - ) - ).OrderBy(eq => eq.Name) - .ToList(); + using (var context = await GetLibraryContextAsync()) + { + return context.Equipments.Where(equipment => + equipment.Type.ToLower().Contains(type.ToLower()) && + priceComparer.Compare(equipment.Price, minPrice) >= 0 && + priceComparer.Compare(equipment.Price, maxPrice) <= 0 && + ( + (Helpers.RemoveDiacritics(equipment.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) || + (Helpers.RemoveDiacritics(equipment.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) + ) + ).OrderBy(eq => eq.Name) + .ToList(); + } + } + catch + { + return new List(); } } @@ -1007,14 +1040,21 @@ namespace AideDeJeu.ViewModels var rarity = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Rarity).SelectedKey ?? ""; var attunement = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Attunement).SelectedKey ?? ""; - using (var context = await GetLibraryContextAsync()) + try { - return context.MagicItems.Where(magicitem => - MatchContains(magicitem.Type, type) && - MatchContains(magicitem.Rarity, rarity) && - MatchContains(magicitem.Attunement, attunement) && - MatchSearch(magicitem) - ).OrderBy(eq => eq.Name).ToList(); + using (var context = await GetLibraryContextAsync()) + { + return context.MagicItems.Where(magicitem => + MatchContains(magicitem.Type, type) && + MatchContains(magicitem.Rarity, rarity) && + MatchContains(magicitem.Attunement, attunement) && + MatchSearch(magicitem) + ).OrderBy(eq => eq.Name).ToList(); + } + } + catch + { + return new List(); } } diff --git a/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs index 18a3b487..42743360 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/StoreViewModel.cs @@ -418,9 +418,16 @@ namespace AideDeJeu.ViewModels { id += $"#{anchor}"; } - using (var context = await GetLibraryContextAsync()) + try { - return await context.Items.Where(item => item.Id == id || item.RootId == id).FirstOrDefaultAsync(); + using (var context = await GetLibraryContextAsync()) + { + return await context.Items.Where(item => item.Id == id || item.RootId == id).FirstOrDefaultAsync(); + } + } + catch + { + return null; } } diff --git a/AideDeJeu/AideDeJeu/Views/ItemDetailPage.xaml.cs b/AideDeJeu/AideDeJeu/Views/ItemDetailPage.xaml.cs index 6875f4fc..50585d25 100644 --- a/AideDeJeu/AideDeJeu/Views/ItemDetailPage.xaml.cs +++ b/AideDeJeu/AideDeJeu/Views/ItemDetailPage.xaml.cs @@ -62,9 +62,15 @@ namespace AideDeJeu.Views async Task InitDBEngineAsync() { await Task.Delay(1000).ConfigureAwait(false); - using (var context = await StoreViewModel.GetLibraryContextAsync().ConfigureAwait(false)) + try + { + using (var context = await StoreViewModel.GetLibraryContextAsync().ConfigureAwait(false)) + { + var item = context.Items.FirstOrDefault(); + } + } + catch { - var item = context.Items.FirstOrDefault(); } }