From 6c10c6c654a4551837fd47644370f866fef8eda4 Mon Sep 17 00:00:00 2001 From: Mikhail Shabanov Date: Wed, 24 Jun 2020 12:19:03 +0200 Subject: [PATCH] Dictionaries DB structure refactored --- ...ictionary.cs => IAchievementDictionary.cs} | 28 +++++----- ...ry.cs => IAchievementSectionDictionary.cs} | 8 +-- ...leDictionary.cs => IClanRoleDictionary.cs} | 6 +-- ...geDictionary.cs => ILanguageDictionary.cs} | 6 +-- ...tionDictionary.cs => INationDictionary.cs} | 6 +-- ...ictionary.cs => IVehicleTypeDictionary.cs} | 6 +-- ...esDictionary.cs => IVehiclesDictionary.cs} | 36 ++++++------- .../DictionariesDataAccessor.cs | 51 +++++++++++-------- .../IDictionariesDataAccessor.cs | 16 +++--- .../Model/AchievementDictionary.cs | 24 +++++++++ .../Model/AchievementSectionDictionary.cs | 14 +++++ .../Model/ClanRoleDictionary.cs | 13 +++++ .../Model/LanguageDictionary.cs | 13 +++++ .../Model/NationDictionary.cs | 13 +++++ .../Model/VehicleTypeDictionary.cs | 13 +++++ .../Model/VehiclesDictionary.cs | 28 ++++++++++ .../AchievementsDictionaryUpdater.cs | 5 +- .../Dictionaries/StaticDictionariesUpdater.cs | 31 +++++------ .../Dictionaries/VehiclesDictionaryUpdater.cs | 5 +- .../Mappers/AchievementDictionaryProfile.cs | 1 + .../Mappers/DictionaryLanguageMapper.cs | 2 +- .../Mappers/VehicleDictionaryProfile.cs | 1 + .../AchievementsDictionaryUpdaterTests.cs | 6 +-- .../StaticDictionaryUpdaterTests.cs | 30 +++++------ .../VehiclesDictionaryUpdaterTests.cs | 6 +-- 25 files changed, 251 insertions(+), 117 deletions(-) rename WotBlitzStatisticsPro.Common/Dictionaries/{AchievementDictionary.cs => IAchievementDictionary.cs} (61%) rename WotBlitzStatisticsPro.Common/Dictionaries/{AchievementSectionDictionary.cs => IAchievementSectionDictionary.cs} (65%) rename WotBlitzStatisticsPro.Common/Dictionaries/{ClanRoleDictionary.cs => IClanRoleDictionary.cs} (68%) rename WotBlitzStatisticsPro.Common/Dictionaries/{LanguageDictionary.cs => ILanguageDictionary.cs} (67%) rename WotBlitzStatisticsPro.Common/Dictionaries/{NationDictionary.cs => INationDictionary.cs} (68%) rename WotBlitzStatisticsPro.Common/Dictionaries/{VehicleTypeDictionary.cs => IVehicleTypeDictionary.cs} (68%) rename WotBlitzStatisticsPro.Common/Dictionaries/{VehiclesDictionary.cs => IVehiclesDictionary.cs} (62%) create mode 100644 WotBlitzStatisticsPro.DataAccess/Model/AchievementDictionary.cs create mode 100644 WotBlitzStatisticsPro.DataAccess/Model/AchievementSectionDictionary.cs create mode 100644 WotBlitzStatisticsPro.DataAccess/Model/ClanRoleDictionary.cs create mode 100644 WotBlitzStatisticsPro.DataAccess/Model/LanguageDictionary.cs create mode 100644 WotBlitzStatisticsPro.DataAccess/Model/NationDictionary.cs create mode 100644 WotBlitzStatisticsPro.DataAccess/Model/VehicleTypeDictionary.cs create mode 100644 WotBlitzStatisticsPro.DataAccess/Model/VehiclesDictionary.cs diff --git a/WotBlitzStatisticsPro.Common/Dictionaries/AchievementDictionary.cs b/WotBlitzStatisticsPro.Common/Dictionaries/IAchievementDictionary.cs similarity index 61% rename from WotBlitzStatisticsPro.Common/Dictionaries/AchievementDictionary.cs rename to WotBlitzStatisticsPro.Common/Dictionaries/IAchievementDictionary.cs index 6d2b4ce..31ce1eb 100644 --- a/WotBlitzStatisticsPro.Common/Dictionaries/AchievementDictionary.cs +++ b/WotBlitzStatisticsPro.Common/Dictionaries/IAchievementDictionary.cs @@ -5,72 +5,72 @@ namespace WotBlitzStatisticsPro.Common.Dictionaries /// /// Achievement dictionary item /// - public class AchievementDictionary + public interface IAchievementDictionary { /// /// id /// - public string AchievementId { get; set; } + string AchievementId { get; set; } /// /// Achievement condition /// - public List Condition { get; set; } + List Condition { get; set; } /// /// Achievement description /// - public List Description { get; set; } + List Description { get; set; } /// /// Historical info /// - public List HeroInfo { get; set; } + List HeroInfo { get; set; } /// /// Image link /// - public string Image { get; set; } + string Image { get; set; } /// /// Image 180x180px link /// - public string ImageBig { get; set; } + string ImageBig { get; set; } /// /// Achievement name /// - public List Name { get; set; } + List Name { get; set; } /// /// Sort order /// - public long? Order { get; set; } + long? Order { get; set; } /// /// Is outdated achievement /// - public bool Outdated { get; set; } + bool Outdated { get; set; } /// /// Achievement section /// - public string SectionId { get; set; } + string SectionId { get; set; } /// /// Achievement section order /// - public long? SectionOrder { get; set; } + long? SectionOrder { get; set; } /// /// Achievement Type /// - public string Type { get; set; } + string Type { get; set; } /// /// Achievement options /// - public List Options { get; set; } + List Options { get; set; } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/Dictionaries/AchievementSectionDictionary.cs b/WotBlitzStatisticsPro.Common/Dictionaries/IAchievementSectionDictionary.cs similarity index 65% rename from WotBlitzStatisticsPro.Common/Dictionaries/AchievementSectionDictionary.cs rename to WotBlitzStatisticsPro.Common/Dictionaries/IAchievementSectionDictionary.cs index dfd1ad0..67098b2 100644 --- a/WotBlitzStatisticsPro.Common/Dictionaries/AchievementSectionDictionary.cs +++ b/WotBlitzStatisticsPro.Common/Dictionaries/IAchievementSectionDictionary.cs @@ -5,22 +5,22 @@ namespace WotBlitzStatisticsPro.Common.Dictionaries /// /// Achievement section dictionary item. /// - public class AchievementSectionDictionary + public interface IAchievementSectionDictionary { /// /// Achievement section id /// - public string AchievementSectionId { get; set; } + string AchievementSectionId { get; set; } /// /// Section order /// - public int Order { get; set; } + int Order { get; set; } /// /// Localized section names /// - public List AchievementSectionNames { get; set; } + List AchievementSectionNames { get; set; } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/Dictionaries/ClanRoleDictionary.cs b/WotBlitzStatisticsPro.Common/Dictionaries/IClanRoleDictionary.cs similarity index 68% rename from WotBlitzStatisticsPro.Common/Dictionaries/ClanRoleDictionary.cs rename to WotBlitzStatisticsPro.Common/Dictionaries/IClanRoleDictionary.cs index 2bf9180..aeb8d5d 100644 --- a/WotBlitzStatisticsPro.Common/Dictionaries/ClanRoleDictionary.cs +++ b/WotBlitzStatisticsPro.Common/Dictionaries/IClanRoleDictionary.cs @@ -5,16 +5,16 @@ namespace WotBlitzStatisticsPro.Common.Dictionaries /// /// Clan role dictionary item /// - public class ClanRoleDictionary + public interface IClanRoleDictionary { /// /// Clan role id /// - public string ClanRoleId { get; set; } + string ClanRoleId { get; set; } /// /// Localized clan role names /// - public List ClanRoleNames { get; set; } + List ClanRoleNames { get; set; } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/Dictionaries/LanguageDictionary.cs b/WotBlitzStatisticsPro.Common/Dictionaries/ILanguageDictionary.cs similarity index 67% rename from WotBlitzStatisticsPro.Common/Dictionaries/LanguageDictionary.cs rename to WotBlitzStatisticsPro.Common/Dictionaries/ILanguageDictionary.cs index 79fe166..b17fe87 100644 --- a/WotBlitzStatisticsPro.Common/Dictionaries/LanguageDictionary.cs +++ b/WotBlitzStatisticsPro.Common/Dictionaries/ILanguageDictionary.cs @@ -3,17 +3,17 @@ /// /// Languages available /// - public class LanguageDictionary + public interface ILanguageDictionary { /// /// Language id /// - public string LanguageId { get; set; } + string LanguageId { get; set; } /// /// Language /// - public string LanguageName { get; set; } + string LanguageName { get; set; } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/Dictionaries/NationDictionary.cs b/WotBlitzStatisticsPro.Common/Dictionaries/INationDictionary.cs similarity index 68% rename from WotBlitzStatisticsPro.Common/Dictionaries/NationDictionary.cs rename to WotBlitzStatisticsPro.Common/Dictionaries/INationDictionary.cs index 20ef147..93c2b55 100644 --- a/WotBlitzStatisticsPro.Common/Dictionaries/NationDictionary.cs +++ b/WotBlitzStatisticsPro.Common/Dictionaries/INationDictionary.cs @@ -5,16 +5,16 @@ namespace WotBlitzStatisticsPro.Common.Dictionaries /// /// Tanks nations dictionary item /// - public class NationDictionary + public interface INationDictionary { /// /// Nation id /// - public string NationId { get; set; } + string NationId { get; set; } /// /// Nation /// - public List NationNames { get; set; } + List NationNames { get; set; } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/Dictionaries/VehicleTypeDictionary.cs b/WotBlitzStatisticsPro.Common/Dictionaries/IVehicleTypeDictionary.cs similarity index 68% rename from WotBlitzStatisticsPro.Common/Dictionaries/VehicleTypeDictionary.cs rename to WotBlitzStatisticsPro.Common/Dictionaries/IVehicleTypeDictionary.cs index 71982be..0afa8ec 100644 --- a/WotBlitzStatisticsPro.Common/Dictionaries/VehicleTypeDictionary.cs +++ b/WotBlitzStatisticsPro.Common/Dictionaries/IVehicleTypeDictionary.cs @@ -5,17 +5,17 @@ namespace WotBlitzStatisticsPro.Common.Dictionaries /// /// Vehicle type dictionary item /// - public class VehicleTypeDictionary + public interface IVehicleTypeDictionary { /// /// Vehicle type id /// - public string VehicleTypeId { get; set; } + string VehicleTypeId { get; set; } /// /// Vehicle type localized name /// - public List VehicleTypeNames { get; set; } + List VehicleTypeNames { get; set; } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/Dictionaries/VehiclesDictionary.cs b/WotBlitzStatisticsPro.Common/Dictionaries/IVehiclesDictionary.cs similarity index 62% rename from WotBlitzStatisticsPro.Common/Dictionaries/VehiclesDictionary.cs rename to WotBlitzStatisticsPro.Common/Dictionaries/IVehiclesDictionary.cs index 4355ffd..ccdd285 100644 --- a/WotBlitzStatisticsPro.Common/Dictionaries/VehiclesDictionary.cs +++ b/WotBlitzStatisticsPro.Common/Dictionaries/IVehiclesDictionary.cs @@ -5,92 +5,92 @@ namespace WotBlitzStatisticsPro.Common.Dictionaries /// /// Vehicle dictionary item /// - public class VehiclesDictionary + public interface IVehiclesDictionary { /// /// VehicleId /// - public long TankId { get; set; } + long TankId { get; set; } /// /// Vehicle name /// - public List Name { get; set; } + List Name { get; set; } /// /// Vehicle description /// - public List Description { get; set; } + List Description { get; set; } /// /// Is vehicle premium /// - public bool IsPremium { get; set; } + bool IsPremium { get; set; } /// /// Vehicle type id /// - public string TypeId { get; set; } + string TypeId { get; set; } /// /// Vehicle nationId /// - public string NationId { get; set; } + string NationId { get; set; } /// /// Vehicle tier /// - public int Tier { get; set; } + int Tier { get; set; } /// /// Vehicle preview image /// - public string PreviewImage { get; set; } + string PreviewImage { get; set; } /// /// Vehicle normal image /// - public string NormalImage { get; set; } + string NormalImage { get; set; } /// /// Vehicle price in credits /// - public decimal PriceCredit { get; set; } + decimal PriceCredit { get; set; } /// /// Vehicle price in gold /// - public decimal PriceGold { get; set; } + decimal PriceGold { get; set; } /// /// Ids of nex tanks and their cost in XP /// - public List NexTanksInTree { get; set; } + List NexTanksInTree { get; set; } /// /// Price in XP for parent vehicle as key /// - public List PriceXp { get; set; } + List PriceXp { get; set; } /// /// Engines id list /// - public int[] Engines { get; set; } + int[] Engines { get; set; } /// /// Guns id list /// - public int[] Guns { get; set; } + int[] Guns { get; set; } /// /// List of compatible suspensions /// - public int[] Suspensions { get; set; } + int[] Suspensions { get; set; } /// /// List of compatible turrets ids /// - public int[] Turrets { get; set; } + int[] Turrets { get; set; } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.DataAccess/DictionariesDataAccessor.cs b/WotBlitzStatisticsPro.DataAccess/DictionariesDataAccessor.cs index aa3c317..f5417c7 100644 --- a/WotBlitzStatisticsPro.DataAccess/DictionariesDataAccessor.cs +++ b/WotBlitzStatisticsPro.DataAccess/DictionariesDataAccessor.cs @@ -1,8 +1,10 @@ using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using MongoDB.Driver; using WotBlitzStatisticsPro.Common; using WotBlitzStatisticsPro.Common.Dictionaries; +using WotBlitzStatisticsPro.DataAccess.Model; namespace WotBlitzStatisticsPro.DataAccess { @@ -24,63 +26,70 @@ namespace WotBlitzStatisticsPro.DataAccess _database = client.GetDatabase(settings.DatabaseName); } - public async Task UpdateLanguages(List languages) + public async Task UpdateLanguages(List languages) { - var dbLanguages = _database.GetCollection(LanguagesCollectionName); + var dbLanguages = _database.GetCollection(LanguagesCollectionName); - await dbLanguages.DeleteManyAsync(Builders.Filter.Empty); + await dbLanguages.DeleteManyAsync(Builders.Filter.Empty); await dbLanguages.InsertManyAsync(languages); } - public async Task UpdateNations(List nations) + public async Task UpdateNations(List nations) { - var dbNations = _database.GetCollection(NationsCollectionName); + var dbNations = _database.GetCollection(NationsCollectionName); - await dbNations.DeleteManyAsync(Builders.Filter.Empty); + await dbNations.DeleteManyAsync(Builders.Filter.Empty); await dbNations.InsertManyAsync(nations); } - public async Task UpdateVehicleTypes(List vehicleTypes) + public async Task UpdateVehicleTypes(List vehicleTypes) { - var dbVehicleTypes = _database.GetCollection(VehicleTypesCollectionName); + var dbVehicleTypes = _database.GetCollection(VehicleTypesCollectionName); - await dbVehicleTypes.DeleteManyAsync(Builders.Filter.Empty); + await dbVehicleTypes.DeleteManyAsync(Builders.Filter.Empty); await dbVehicleTypes.InsertManyAsync(vehicleTypes); } - public async Task UpdateClanRoles(List clanRoles) + public async Task UpdateClanRoles(List clanRoles) { - var dbClanRoles = _database.GetCollection(ClanRolesCollectionName); + var dbClanRoles = _database.GetCollection(ClanRolesCollectionName); - await dbClanRoles.DeleteManyAsync(Builders.Filter.Empty); + await dbClanRoles.DeleteManyAsync(Builders.Filter.Empty); await dbClanRoles.InsertManyAsync(clanRoles); } - public async Task UpdateAchievementsSections(List achievementSections) + public async Task UpdateAchievementsSections(List achievementSections) { var dbAchievementSections = - _database.GetCollection(AchievementsSectionsCollectionName); + _database.GetCollection(AchievementsSectionsCollectionName); - await dbAchievementSections.DeleteManyAsync(Builders.Filter.Empty); + await dbAchievementSections.DeleteManyAsync(Builders.Filter.Empty); await dbAchievementSections.InsertManyAsync(achievementSections); } - public async Task UpdateAchievements(List achievementDictionary) + public async Task UpdateAchievements(List achievementDictionary) { var dbAchievementSections = - _database.GetCollection(AchievementsCollectionName); + _database.GetCollection(AchievementsCollectionName); - await dbAchievementSections.DeleteManyAsync(Builders.Filter.Empty); + await dbAchievementSections.DeleteManyAsync(Builders.Filter.Empty); await dbAchievementSections.InsertManyAsync(achievementDictionary); } - public async Task UpdateVehicles(List vehiclesDictionary) + public async Task UpdateVehicles(List vehiclesDictionary) { var dbVehicles = - _database.GetCollection(VehiclesCollectionName); + _database.GetCollection(VehiclesCollectionName); - await dbVehicles.DeleteManyAsync(Builders.Filter.Empty); + await dbVehicles.DeleteManyAsync(Builders.Filter.Empty); await dbVehicles.InsertManyAsync(vehiclesDictionary); } + + public async Task> ReadLanguages() + { + var collection = await _database.GetCollection(LanguagesCollectionName) + .FindAsync(Builders.Filter.Empty); + return collection.ToList(); + } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.DataAccess/IDictionariesDataAccessor.cs b/WotBlitzStatisticsPro.DataAccess/IDictionariesDataAccessor.cs index 01e3649..534d0ac 100644 --- a/WotBlitzStatisticsPro.DataAccess/IDictionariesDataAccessor.cs +++ b/WotBlitzStatisticsPro.DataAccess/IDictionariesDataAccessor.cs @@ -6,18 +6,20 @@ namespace WotBlitzStatisticsPro.DataAccess { public interface IDictionariesDataAccessor { - Task UpdateLanguages(List languages); + Task UpdateLanguages(List languages); - Task UpdateNations(List nations); + Task UpdateNations(List nations); - Task UpdateVehicleTypes(List vehicleTypes); + Task UpdateVehicleTypes(List vehicleTypes); - Task UpdateClanRoles(List clanRoles); + Task UpdateClanRoles(List clanRoles); - Task UpdateAchievementsSections(List achievementSections); + Task UpdateAchievementsSections(List achievementSections); - Task UpdateAchievements(List achievementDictionary); + Task UpdateAchievements(List achievementDictionary); - Task UpdateVehicles(List vehiclesDictionary); + Task UpdateVehicles(List vehiclesDictionary); + + Task> ReadLanguages(); } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.DataAccess/Model/AchievementDictionary.cs b/WotBlitzStatisticsPro.DataAccess/Model/AchievementDictionary.cs new file mode 100644 index 0000000..bcb8c1f --- /dev/null +++ b/WotBlitzStatisticsPro.DataAccess/Model/AchievementDictionary.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using MongoDB.Bson.Serialization.Attributes; +using WotBlitzStatisticsPro.Common.Dictionaries; + +namespace WotBlitzStatisticsPro.DataAccess.Model +{ + public class AchievementDictionary : IAchievementDictionary + { + [BsonId] + public string AchievementId { get; set; } + public List Condition { get; set; } + public List Description { get; set; } + public List HeroInfo { get; set; } + public string Image { get; set; } + public string ImageBig { get; set; } + public List Name { get; set; } + public long? Order { get; set; } + public bool Outdated { get; set; } + public string SectionId { get; set; } + public long? SectionOrder { get; set; } + public string Type { get; set; } + public List Options { get; set; } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.DataAccess/Model/AchievementSectionDictionary.cs b/WotBlitzStatisticsPro.DataAccess/Model/AchievementSectionDictionary.cs new file mode 100644 index 0000000..293f191 --- /dev/null +++ b/WotBlitzStatisticsPro.DataAccess/Model/AchievementSectionDictionary.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using MongoDB.Bson.Serialization.Attributes; +using WotBlitzStatisticsPro.Common.Dictionaries; + +namespace WotBlitzStatisticsPro.DataAccess.Model +{ + public class AchievementSectionDictionary: IAchievementSectionDictionary + { + [BsonId] + public string AchievementSectionId { get; set; } + public int Order { get; set; } + public List AchievementSectionNames { get; set; } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.DataAccess/Model/ClanRoleDictionary.cs b/WotBlitzStatisticsPro.DataAccess/Model/ClanRoleDictionary.cs new file mode 100644 index 0000000..55fedf2 --- /dev/null +++ b/WotBlitzStatisticsPro.DataAccess/Model/ClanRoleDictionary.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using MongoDB.Bson.Serialization.Attributes; +using WotBlitzStatisticsPro.Common.Dictionaries; + +namespace WotBlitzStatisticsPro.DataAccess.Model +{ + public class ClanRoleDictionary : IClanRoleDictionary + { + [BsonId] + public string ClanRoleId { get; set; } + public List ClanRoleNames { get; set; } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.DataAccess/Model/LanguageDictionary.cs b/WotBlitzStatisticsPro.DataAccess/Model/LanguageDictionary.cs new file mode 100644 index 0000000..d546db4 --- /dev/null +++ b/WotBlitzStatisticsPro.DataAccess/Model/LanguageDictionary.cs @@ -0,0 +1,13 @@ +using MongoDB.Bson.Serialization.Attributes; +using WotBlitzStatisticsPro.Common.Dictionaries; + +namespace WotBlitzStatisticsPro.DataAccess.Model +{ + public class LanguageDictionary: ILanguageDictionary + { + [BsonId] + public string LanguageId { get; set; } + + public string LanguageName { get; set; } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.DataAccess/Model/NationDictionary.cs b/WotBlitzStatisticsPro.DataAccess/Model/NationDictionary.cs new file mode 100644 index 0000000..36ca07a --- /dev/null +++ b/WotBlitzStatisticsPro.DataAccess/Model/NationDictionary.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using MongoDB.Bson.Serialization.Attributes; +using WotBlitzStatisticsPro.Common.Dictionaries; + +namespace WotBlitzStatisticsPro.DataAccess.Model +{ + public class NationDictionary : INationDictionary + { + [BsonId] + public string NationId { get; set; } + public List NationNames { get; set; } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.DataAccess/Model/VehicleTypeDictionary.cs b/WotBlitzStatisticsPro.DataAccess/Model/VehicleTypeDictionary.cs new file mode 100644 index 0000000..b20611b --- /dev/null +++ b/WotBlitzStatisticsPro.DataAccess/Model/VehicleTypeDictionary.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using MongoDB.Bson.Serialization.Attributes; +using WotBlitzStatisticsPro.Common.Dictionaries; + +namespace WotBlitzStatisticsPro.DataAccess.Model +{ + public class VehicleTypeDictionary : IVehicleTypeDictionary + { + [BsonId] + public string VehicleTypeId { get; set; } + public List VehicleTypeNames { get; set; } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.DataAccess/Model/VehiclesDictionary.cs b/WotBlitzStatisticsPro.DataAccess/Model/VehiclesDictionary.cs new file mode 100644 index 0000000..0303991 --- /dev/null +++ b/WotBlitzStatisticsPro.DataAccess/Model/VehiclesDictionary.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using MongoDB.Bson.Serialization.Attributes; +using WotBlitzStatisticsPro.Common.Dictionaries; + +namespace WotBlitzStatisticsPro.DataAccess.Model +{ + public class VehiclesDictionary : IVehiclesDictionary + { + [BsonId] + public long TankId { get; set; } + public List Name { get; set; } + public List Description { get; set; } + public bool IsPremium { get; set; } + public string TypeId { get; set; } + public string NationId { get; set; } + public int Tier { get; set; } + public string PreviewImage { get; set; } + public string NormalImage { get; set; } + public decimal PriceCredit { get; set; } + public decimal PriceGold { get; set; } + public List NexTanksInTree { get; set; } + public List PriceXp { get; set; } + public int[] Engines { get; set; } + public int[] Guns { get; set; } + public int[] Suspensions { get; set; } + public int[] Turrets { get; set; } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Logic/Dictionaries/AchievementsDictionaryUpdater.cs b/WotBlitzStatisticsPro.Logic/Dictionaries/AchievementsDictionaryUpdater.cs index e9c7e51..7d31de7 100644 --- a/WotBlitzStatisticsPro.Logic/Dictionaries/AchievementsDictionaryUpdater.cs +++ b/WotBlitzStatisticsPro.Logic/Dictionaries/AchievementsDictionaryUpdater.cs @@ -6,6 +6,7 @@ using AutoMapper; using WotBlitzStatisticsPro.Common.Dictionaries; using WotBlitzStatisticsPro.Common.Model; using WotBlitzStatisticsPro.DataAccess; +using WotBlitzStatisticsPro.DataAccess.Model; using WotBlitzStatisticsPro.WgApiClient; using WotBlitzStatisticsPro.WgApiClient.Model; @@ -43,11 +44,11 @@ namespace WotBlitzStatisticsPro.Logic.Dictionaries }; } - private async Task> GetAndMapAchievementsDictionary() + private async Task> GetAndMapAchievementsDictionary() { var defaultRealmType = RealmType.Eu; - var achievements = new List(); + var achievements = new List(); foreach (var requestLanguage in (RequestLanguage[])Enum.GetValues(typeof(RequestLanguage))) { diff --git a/WotBlitzStatisticsPro.Logic/Dictionaries/StaticDictionariesUpdater.cs b/WotBlitzStatisticsPro.Logic/Dictionaries/StaticDictionariesUpdater.cs index 6e495ad..5d5c973 100644 --- a/WotBlitzStatisticsPro.Logic/Dictionaries/StaticDictionariesUpdater.cs +++ b/WotBlitzStatisticsPro.Logic/Dictionaries/StaticDictionariesUpdater.cs @@ -6,6 +6,7 @@ using AutoMapper; using WotBlitzStatisticsPro.Common.Dictionaries; using WotBlitzStatisticsPro.Common.Model; using WotBlitzStatisticsPro.DataAccess; +using WotBlitzStatisticsPro.DataAccess.Model; using WotBlitzStatisticsPro.WgApiClient; using WotBlitzStatisticsPro.WgApiClient.Model; @@ -56,19 +57,19 @@ namespace WotBlitzStatisticsPro.Logic.Dictionaries } private async Task<( - List, - List, - List, - List, - List)> GetAndMapDictionaries() + List, + List, + List, + List, + List)> GetAndMapDictionaries() { var defaultRealmType = RealmType.Eu; - List languages = null; - var nations = new List(); - var vehicleTypes = new List(); - var clanRoles = new List(); - var achievementsSections = new List(); + List languages = null; + var nations = new List(); + var vehicleTypes = new List(); + var clanRoles = new List(); + var achievementsSections = new List(); foreach (var requestLanguage in (RequestLanguage[])Enum.GetValues(typeof(RequestLanguage))) { @@ -79,7 +80,7 @@ namespace WotBlitzStatisticsPro.Logic.Dictionaries { languages = _mapper.Map, List>(wotEncyclopediaInfoResponse - .Languages); + .Languages).Cast().ToList(); } MapVehicleNations(requestLanguage, wotEncyclopediaInfoResponse.VehicleNations, nations); @@ -94,7 +95,7 @@ namespace WotBlitzStatisticsPro.Logic.Dictionaries private void MapVehicleNations( RequestLanguage requestLanguage, Dictionary sourceDictionary, - List destinationDictionary) + List destinationDictionary) { foreach (var source in sourceDictionary) { @@ -116,7 +117,7 @@ namespace WotBlitzStatisticsPro.Logic.Dictionaries private void MapVehicleTypes( RequestLanguage requestLanguage, Dictionary sourceDictionary, - List destinationDictionary) + List destinationDictionary) { foreach (var source in sourceDictionary) { @@ -138,7 +139,7 @@ namespace WotBlitzStatisticsPro.Logic.Dictionaries private void MapClanRoles( RequestLanguage requestLanguage, Dictionary sourceDictionary, - List destinationDictionary) + List destinationDictionary) { foreach (var source in sourceDictionary) { @@ -160,7 +161,7 @@ namespace WotBlitzStatisticsPro.Logic.Dictionaries private void MapAchievementsSections( RequestLanguage requestLanguage, Dictionary sourceSections, - List destinationDictionary) + List destinationDictionary) { foreach (var section in sourceSections) { diff --git a/WotBlitzStatisticsPro.Logic/Dictionaries/VehiclesDictionaryUpdater.cs b/WotBlitzStatisticsPro.Logic/Dictionaries/VehiclesDictionaryUpdater.cs index 40716ed..792e2ba 100644 --- a/WotBlitzStatisticsPro.Logic/Dictionaries/VehiclesDictionaryUpdater.cs +++ b/WotBlitzStatisticsPro.Logic/Dictionaries/VehiclesDictionaryUpdater.cs @@ -6,6 +6,7 @@ using AutoMapper; using WotBlitzStatisticsPro.Common.Dictionaries; using WotBlitzStatisticsPro.Common.Model; using WotBlitzStatisticsPro.DataAccess; +using WotBlitzStatisticsPro.DataAccess.Model; using WotBlitzStatisticsPro.WgApiClient; using WotBlitzStatisticsPro.WgApiClient.Model; @@ -45,11 +46,11 @@ namespace WotBlitzStatisticsPro.Logic.Dictionaries } - private async Task> GetAndMapVehiclesDictionary() + private async Task> GetAndMapVehiclesDictionary() { var defaultRealmType = RealmType.Eu; - var vehicles = new List(); + var vehicles = new List(); foreach (var requestLanguage in (RequestLanguage[]) Enum.GetValues(typeof(RequestLanguage))) { diff --git a/WotBlitzStatisticsPro.Logic/Mappers/AchievementDictionaryProfile.cs b/WotBlitzStatisticsPro.Logic/Mappers/AchievementDictionaryProfile.cs index dff6897..6ac64bd 100644 --- a/WotBlitzStatisticsPro.Logic/Mappers/AchievementDictionaryProfile.cs +++ b/WotBlitzStatisticsPro.Logic/Mappers/AchievementDictionaryProfile.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using AutoMapper; using WotBlitzStatisticsPro.Common.Dictionaries; +using WotBlitzStatisticsPro.DataAccess.Model; using WotBlitzStatisticsPro.WgApiClient.Model; namespace WotBlitzStatisticsPro.Logic.Mappers diff --git a/WotBlitzStatisticsPro.Logic/Mappers/DictionaryLanguageMapper.cs b/WotBlitzStatisticsPro.Logic/Mappers/DictionaryLanguageMapper.cs index db6d578..55bffe9 100644 --- a/WotBlitzStatisticsPro.Logic/Mappers/DictionaryLanguageMapper.cs +++ b/WotBlitzStatisticsPro.Logic/Mappers/DictionaryLanguageMapper.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; using AutoMapper; -using WotBlitzStatisticsPro.Common.Dictionaries; +using WotBlitzStatisticsPro.DataAccess.Model; namespace WotBlitzStatisticsPro.Logic.Mappers { diff --git a/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs b/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs index 4579462..d0c30d8 100644 --- a/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs +++ b/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using AutoMapper; using WotBlitzStatisticsPro.Common.Dictionaries; +using WotBlitzStatisticsPro.DataAccess.Model; using WotBlitzStatisticsPro.WgApiClient.Model; namespace WotBlitzStatisticsPro.Logic.Mappers diff --git a/WotBlitzStatisticsPro.Tests/DictionariesTests/AchievementsDictionaryUpdaterTests.cs b/WotBlitzStatisticsPro.Tests/DictionariesTests/AchievementsDictionaryUpdaterTests.cs index bc10f84..8df79e1 100644 --- a/WotBlitzStatisticsPro.Tests/DictionariesTests/AchievementsDictionaryUpdaterTests.cs +++ b/WotBlitzStatisticsPro.Tests/DictionariesTests/AchievementsDictionaryUpdaterTests.cs @@ -80,10 +80,10 @@ namespace WotBlitzStatisticsPro.Tests.DictionariesTests [Test] public async Task ShouldSaveAppropriateAchievementsDictionary() { - List targetAchievementDictionaries = null; + List targetAchievementDictionaries = null; _dataAccessorMock - .Setup(d => d.UpdateAchievements(It.IsAny>())) - .Callback((List dictionary) => targetAchievementDictionaries = dictionary); + .Setup(d => d.UpdateAchievements(It.IsAny>())) + .Callback((List dictionary) => targetAchievementDictionaries = dictionary); await _achievementDictionariesUpdater.Update(); diff --git a/WotBlitzStatisticsPro.Tests/DictionariesTests/StaticDictionaryUpdaterTests.cs b/WotBlitzStatisticsPro.Tests/DictionariesTests/StaticDictionaryUpdaterTests.cs index 2d3ae19..0ba2c37 100644 --- a/WotBlitzStatisticsPro.Tests/DictionariesTests/StaticDictionaryUpdaterTests.cs +++ b/WotBlitzStatisticsPro.Tests/DictionariesTests/StaticDictionaryUpdaterTests.cs @@ -82,10 +82,10 @@ namespace WotBlitzStatisticsPro.Tests.DictionariesTests [Test] public async Task ShouldSaveAppropriateLanguagesDictionary() { - List languageDictionary = null; + List languageDictionary = null; _dataAccessorMock - .Setup(d => d.UpdateLanguages(It.IsAny>())) - .Callback((List dictionary) => languageDictionary = dictionary); + .Setup(d => d.UpdateLanguages(It.IsAny>())) + .Callback((List dictionary) => languageDictionary = dictionary); await _staticDictionariesUpdater.Update(); @@ -104,10 +104,10 @@ namespace WotBlitzStatisticsPro.Tests.DictionariesTests [Test] public async Task ShouldSaveAppropriateNationsDictionary() { - List nations = null; + List nations = null; _dataAccessorMock - .Setup(d => d.UpdateNations(It.IsAny>())) - .Callback((List dictionary) => nations = dictionary); + .Setup(d => d.UpdateNations(It.IsAny>())) + .Callback((List dictionary) => nations = dictionary); await _staticDictionariesUpdater.Update(); @@ -132,10 +132,10 @@ namespace WotBlitzStatisticsPro.Tests.DictionariesTests [Test] public async Task ShouldSaveAppropriateVehicleTypesDictionary() { - List vehicleTypes = null; + List vehicleTypes = null; _dataAccessorMock - .Setup(d => d.UpdateVehicleTypes(It.IsAny>())) - .Callback((List dictionary) => vehicleTypes = dictionary); + .Setup(d => d.UpdateVehicleTypes(It.IsAny>())) + .Callback((List dictionary) => vehicleTypes = dictionary); await _staticDictionariesUpdater.Update(); @@ -160,10 +160,10 @@ namespace WotBlitzStatisticsPro.Tests.DictionariesTests [Test] public async Task ShouldSaveAppropriateClanRolesDictionary() { - List clanRoles = null; + List clanRoles = null; _dataAccessorMock - .Setup(d => d.UpdateClanRoles(It.IsAny>())) - .Callback((List dictionary) => clanRoles = dictionary); + .Setup(d => d.UpdateClanRoles(It.IsAny>())) + .Callback((List dictionary) => clanRoles = dictionary); await _staticDictionariesUpdater.Update(); @@ -188,10 +188,10 @@ namespace WotBlitzStatisticsPro.Tests.DictionariesTests [Test] public async Task ShouldSaveAppropriateAchievementsSectionsDictionary() { - List achievementsSections = null; + List achievementsSections = null; _dataAccessorMock - .Setup(d => d.UpdateAchievementsSections(It.IsAny>())) - .Callback((List dictionary) => achievementsSections = dictionary); + .Setup(d => d.UpdateAchievementsSections(It.IsAny>())) + .Callback((List dictionary) => achievementsSections = dictionary); await _staticDictionariesUpdater.Update(); diff --git a/WotBlitzStatisticsPro.Tests/DictionariesTests/VehiclesDictionaryUpdaterTests.cs b/WotBlitzStatisticsPro.Tests/DictionariesTests/VehiclesDictionaryUpdaterTests.cs index f7eeda0..d8caa8b 100644 --- a/WotBlitzStatisticsPro.Tests/DictionariesTests/VehiclesDictionaryUpdaterTests.cs +++ b/WotBlitzStatisticsPro.Tests/DictionariesTests/VehiclesDictionaryUpdaterTests.cs @@ -80,10 +80,10 @@ namespace WotBlitzStatisticsPro.Tests.DictionariesTests [Test] public async Task ShouldSaveAppropriateVehiclesDictionary() { - List targetVehicleDictionary = null; + List targetVehicleDictionary = null; _dataAccessorMock - .Setup(d => d.UpdateVehicles(It.IsAny>())) - .Callback((List dictionary) => targetVehicleDictionary = dictionary); + .Setup(d => d.UpdateVehicles(It.IsAny>())) + .Callback((List dictionary) => targetVehicleDictionary = dictionary); await _vehiclesDictionariesUpdater.Update();