diff --git a/WotBlitzStatisticsPro.Common/Model/AccountInfoResponse.cs b/WotBlitzStatisticsPro.Common/Model/AccountInfoResponse.cs
index dea75a5..9e2bc48 100644
--- a/WotBlitzStatisticsPro.Common/Model/AccountInfoResponse.cs
+++ b/WotBlitzStatisticsPro.Common/Model/AccountInfoResponse.cs
@@ -16,17 +16,17 @@ namespace WotBlitzStatisticsPro.Common.Model
///
/// Account creation date
///
- public DateTime CreatedAt { get; set; }
+ public DateTime CreatedAt { get; set; } = new DateTime(1970, 1, 1);
///
/// Last battle time
///
- public DateTime LastBattleTime { get; set; }
+ public DateTime LastBattleTime { get; set; } = new DateTime(1970, 1, 1);
- ///
- /// Player's nick
- ///
- public string? Nickname { get; set; }
+ ///
+ /// Player's nick
+ ///
+ public string? Nickname { get; set; }
///
/// Battles count
diff --git a/WotBlitzStatisticsPro.Logic/Dictionaries/DictionariesUpdaterResolver.cs b/WotBlitzStatisticsPro.Logic/Dictionaries/DictionariesUpdaterResolver.cs
index 70d3db1..1da037d 100644
--- a/WotBlitzStatisticsPro.Logic/Dictionaries/DictionariesUpdaterResolver.cs
+++ b/WotBlitzStatisticsPro.Logic/Dictionaries/DictionariesUpdaterResolver.cs
@@ -7,6 +7,6 @@ namespace WotBlitzStatisticsPro.Logic.Dictionaries
///
/// Dictionary type for resolving service.
/// Updater service.
- public delegate IDictionaryUpdater DictionariesUpdaterResolver(DictionaryType dictionaryType);
+ public delegate IDictionaryUpdater? DictionariesUpdaterResolver(DictionaryType dictionaryType);
}
\ No newline at end of file
diff --git a/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs b/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs
index 83bddd1..49be930 100644
--- a/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs
+++ b/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using AutoMapper;
using WotBlitzStatisticsPro.Common.Dictionaries;
using WotBlitzStatisticsPro.DataAccess.Model;
@@ -26,9 +27,9 @@ namespace WotBlitzStatisticsPro.Logic.Mappers
.ForMember(d => d.NormalImage,
o => o.MapFrom(s => s.Images == null ? string.Empty : s.Images["normal"]))
.ForMember(d => d.PriceCredit,
- o => o.MapFrom(s => s.Cost == null ? string.Empty : s.Cost["price_credit"]))
+ o => o.MapFrom(s => s.Cost == null ? decimal.Zero : Convert.ToDecimal(s.Cost["price_credit"])))
.ForMember(d => d.PriceGold,
- o => o.MapFrom(s => s.Cost == null ? string.Empty : s.Cost["price_gold"]))
+ o => o.MapFrom(s => s.Cost == null ? decimal.Zero : Convert.ToDecimal(s.Cost["price_gold"])))
.ForMember(d => d.NexTanksInTree,
o =>
o.MapFrom(s => s.NextTanks))
diff --git a/WotBlitzStatisticsPro.Logic/WargamingAccounts.cs b/WotBlitzStatisticsPro.Logic/WargamingAccounts.cs
index 4a07688..74c1efd 100644
--- a/WotBlitzStatisticsPro.Logic/WargamingAccounts.cs
+++ b/WotBlitzStatisticsPro.Logic/WargamingAccounts.cs
@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
using WotBlitzStatisticsPro.Common.Model;
using WotBlitzStatisticsPro.Logic.AccountInformationPipeline;
using WotBlitzStatisticsPro.Logic.AccountInformationPipeline.OperationContext;
@@ -11,31 +12,45 @@ namespace WotBlitzStatisticsPro.Logic
public class WargamingAccounts: IWargamingAccounts
{
private readonly IOperationFactory _operationFactory;
+ private readonly ILogger _logger;
- public WargamingAccounts(IOperationFactory operationFactory)
+ public WargamingAccounts(IOperationFactory operationFactory, ILogger logger)
{
_operationFactory = operationFactory;
+ _logger = logger;
}
- public async Task GatherAccountInformation(RealmType realm, long accountId, RequestLanguage requestLanguage)
+ public async Task GatherAccountInformation(RealmType realm, long accountId,
+ RequestLanguage requestLanguage)
{
var contextData = new AccountInformationPipelineContextData();
- var context = new OperationContext(new AccountRequest(accountId, realm, requestLanguage));
- context.AddOrReplace(contextData);
- var pipeline = new Pipeline(_operationFactory);
-
- pipeline.AddOperation()
- .AddOperation()
- .AddOperation()
- .AddOperation()
- ;
-
- var firstOperation = pipeline.Build();
- if (firstOperation != null)
+ try
{
- await firstOperation
- .Invoke(context, null)
- .ConfigureAwait(false);
+
+ var context = new OperationContext(new AccountRequest(accountId, realm, requestLanguage));
+ context.AddOrReplace(contextData);
+ var pipeline = new Pipeline(_operationFactory);
+
+ pipeline.AddOperation()
+ .AddOperation()
+ .AddOperation()
+ .AddOperation()
+ ;
+
+ var firstOperation = pipeline.Build();
+ if (firstOperation != null)
+ {
+ await firstOperation
+ .Invoke(context, null)
+ .ConfigureAwait(false);
+ }
+
+ }
+ catch (Exception e)
+ {
+ _logger.LogError(e, "GatherAccountInformation error");
+
+ throw;
}
return contextData?.Response ?? new AccountInfoResponse();
@@ -44,55 +59,71 @@ namespace WotBlitzStatisticsPro.Logic
public async Task GatherAndSaveAccountInformation(RealmType realm, long accountId, RequestLanguage requestLanguage)
{
var contextData = new AccountInformationPipelineContextData();
- var context = new OperationContext(new AccountRequest(accountId, realm, requestLanguage));
- context.AddOrReplace(contextData);
- var pipeline = new Pipeline(_operationFactory);
-
- pipeline.AddOperation()
- .AddOperation()
- .AddOperation()
- .AddOperation()
- .AddOperation()
- .AddOperation()
- .AddOperation()
- ;
-
- var firstOperation = pipeline.Build();
- if (firstOperation != null)
+ try
{
- await firstOperation
- .Invoke(context, null)
- .ConfigureAwait(false);
- }
+ var context = new OperationContext(new AccountRequest(accountId, realm, requestLanguage));
+ context.AddOrReplace(contextData);
+ var pipeline = new Pipeline(_operationFactory);
+
+ pipeline.AddOperation()
+ .AddOperation()
+ .AddOperation()
+ .AddOperation()
+ .AddOperation()
+ .AddOperation()
+ .AddOperation()
+ ;
+
+ var firstOperation = pipeline.Build();
+ if (firstOperation != null)
+ {
+ await firstOperation
+ .Invoke(context, null)
+ .ConfigureAwait(false);
+ }
+ }
+ catch (Exception e)
+ {
+ _logger.LogError(e, "GatherAndSaveAccountInformation error");
+
+ throw;
+ }
return contextData?.Response ?? new AccountInfoResponse();
}
public async Task GetAccountInfoHistory(RealmType realm, long accountId, DateTime startDate, RequestLanguage requestLanguage)
{
var contextData = new AccountHistoryInformationPipelineContextData(startDate);
- var context = new OperationContext(new AccountRequest(accountId, realm, requestLanguage));
- context.AddOrReplace(contextData);
- var pipeline = new Pipeline(_operationFactory);
-
- pipeline.AddOperation()
- .AddOperation()
- .AddOperation()
- .AddOperation()
- .AddOperation()
- .AddOperation()
- .AddOperation()
- .AddOperation()
- ;
-
- var firstOperation = pipeline.Build();
- if (firstOperation != null)
+ try
{
- await firstOperation
- .Invoke(context, null)
- .ConfigureAwait(false);
- }
+ var context = new OperationContext(new AccountRequest(accountId, realm, requestLanguage));
+ context.AddOrReplace(contextData);
+ var pipeline = new Pipeline(_operationFactory);
+ pipeline.AddOperation()
+ .AddOperation()
+ .AddOperation()
+ .AddOperation()
+ .AddOperation()
+ .AddOperation()
+ .AddOperation()
+ .AddOperation()
+ ;
+
+ var firstOperation = pipeline.Build();
+ if (firstOperation != null)
+ {
+ await firstOperation
+ .Invoke(context, null)
+ .ConfigureAwait(false);
+ }
+ }
+ catch (Exception e)
+ {
+ _logger.LogError(e, "GetAccountInfoHistory error");
+ throw;
+ }
return contextData?.Response ?? new AccountInfoHistoryResponse();
}
}
diff --git a/WotBlitzStatisticsPro.Logic/WargamingDictionaries.cs b/WotBlitzStatisticsPro.Logic/WargamingDictionaries.cs
index 2d2548a..585a6c9 100644
--- a/WotBlitzStatisticsPro.Logic/WargamingDictionaries.cs
+++ b/WotBlitzStatisticsPro.Logic/WargamingDictionaries.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
using WotBlitzStatisticsPro.Common.Model;
using WotBlitzStatisticsPro.Logic.Dictionaries;
@@ -9,27 +10,37 @@ namespace WotBlitzStatisticsPro.Logic
public class WargamingDictionaries: IWargamingDictionaries
{
private readonly DictionariesUpdaterResolver _dictionaryUpdaterFactoryMethod;
+ private readonly ILogger _logger;
- public WargamingDictionaries(DictionariesUpdaterResolver dictionaryUpdaterFactoryMethod)
+ public WargamingDictionaries(DictionariesUpdaterResolver dictionaryUpdaterFactoryMethod, ILogger logger)
{
_dictionaryUpdaterFactoryMethod = dictionaryUpdaterFactoryMethod;
+ _logger = logger;
}
public async Task UpdateDictionaries(UpdateDictionariesRequest updateDictionariesRequest)
{
var response = new List();
- foreach (var dictionaryType in (DictionaryType[])Enum.GetValues(typeof(DictionaryType)))
+ try
{
- if ((updateDictionariesRequest.DictionaryTypes & dictionaryType) != 0)
+ foreach (var dictionaryType in (DictionaryType[]) Enum.GetValues(typeof(DictionaryType)))
{
- var dictionaryUpdater = _dictionaryUpdaterFactoryMethod(dictionaryType);
- if (dictionaryUpdater != null)
+ if ((updateDictionariesRequest.DictionaryTypes & dictionaryType) != 0)
{
- response.Add(await dictionaryUpdater.Update());
+ var dictionaryUpdater = _dictionaryUpdaterFactoryMethod(dictionaryType);
+ if (dictionaryUpdater != null)
+ {
+ response.Add(await dictionaryUpdater.Update());
+ }
}
}
}
+ catch (Exception e)
+ {
+ _logger.LogError(e, "UpdateDictionaries error");
+ throw;
+ }
return response.ToArray();
}
diff --git a/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs b/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs
index 148aa45..db5ac71 100644
--- a/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs
+++ b/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs
@@ -49,7 +49,7 @@ namespace WotBlitzStatisticsPro.Logic
DictionaryType.StaticDictionaries => serviceProvider.GetService()!,
DictionaryType.Achievements => serviceProvider.GetService()!,
DictionaryType.Vehicles => serviceProvider.GetService()!,
- _ => throw new ApplicationException($"Unknown dictionary type '{dictionaryType}'")
+ _ => null
};
});
}
diff --git a/WotBlitzStatisticsPro.Tests/DictionariesTests/DictionariesServiceTests.cs b/WotBlitzStatisticsPro.Tests/DictionariesTests/DictionariesServiceTests.cs
index e42cd09..03d02d8 100644
--- a/WotBlitzStatisticsPro.Tests/DictionariesTests/DictionariesServiceTests.cs
+++ b/WotBlitzStatisticsPro.Tests/DictionariesTests/DictionariesServiceTests.cs
@@ -1,5 +1,6 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
using Moq;
using NUnit.Framework;
using WotBlitzStatisticsPro.Common.Model;
@@ -40,7 +41,8 @@ namespace WotBlitzStatisticsPro.Tests.DictionariesTests
var services = serviceProvider.BuildServiceProvider();
- _wargamingDictionaries = new WargamingDictionaries(services.GetService());
+ _wargamingDictionaries = new WargamingDictionaries(services.GetService(),
+ (new Mock>()).Object);
}
[Test]