diff --git a/WotBlitzStatisticsPro.Common/Model/AccountInfoResponse.cs b/WotBlitzStatisticsPro.Common/Model/AccountInfoResponse.cs index 9e2bc48..f30526f 100644 --- a/WotBlitzStatisticsPro.Common/Model/AccountInfoResponse.cs +++ b/WotBlitzStatisticsPro.Common/Model/AccountInfoResponse.cs @@ -149,9 +149,19 @@ namespace WotBlitzStatisticsPro.Common.Model public decimal AvgXp => Battles == 0 ? 0m : (decimal)Xp / Battles; /// - /// All player's tanks + /// Damage coefficient /// - public List? Tanks { get; set; } + public decimal DamageCoefficient => DamageReceived == 0 ? 0m : (decimal) DamageDealt / DamageReceived; + + /// + /// Rate of survival + /// + public decimal SurvivalRate => Battles == 0 ? 0m : (decimal) 100 * SurvivedBattles / Battles; + + /// + /// All player's tanks + /// + public List? Tanks { get; set; } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/Model/TankInfoResponse.cs b/WotBlitzStatisticsPro.Common/Model/TankInfoResponse.cs index 92a9be9..10650d1 100644 --- a/WotBlitzStatisticsPro.Common/Model/TankInfoResponse.cs +++ b/WotBlitzStatisticsPro.Common/Model/TankInfoResponse.cs @@ -147,6 +147,17 @@ namespace WotBlitzStatisticsPro.Common.Model /// public decimal AvgXp => (decimal) Xp / Battles; + /// + /// Damage coefficient + /// + public decimal DamageCoefficient => DamageReceived == 0 ? 0m : (decimal)DamageDealt / DamageReceived; + + /// + /// Rate of survival + /// + public decimal SurvivalRate => (decimal)100 * SurvivedBattles / Battles; + + /// /// Tank name /// diff --git a/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/AccountInformationPipelineContextData.cs b/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/AccountInformationPipelineContextData.cs index 4205e73..c07bc52 100644 --- a/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/AccountInformationPipelineContextData.cs +++ b/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/AccountInformationPipelineContextData.cs @@ -18,5 +18,7 @@ namespace WotBlitzStatisticsPro.Logic.AccountInformationPipeline public AccountInfo? DbAccountInfo { get; set; } + // ToDo: In the future, there should be the way to skip some operations in the pipe. Now we use this dummy flag... + public bool NeedToSaveData { get; set; } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/Operations/CheckLAstBattleDateOperation.cs b/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/Operations/CheckLAstBattleDateOperation.cs index 51927f9..300f649 100644 --- a/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/Operations/CheckLAstBattleDateOperation.cs +++ b/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/Operations/CheckLAstBattleDateOperation.cs @@ -19,13 +19,10 @@ namespace WotBlitzStatisticsPro.Logic.AccountInformationPipeline.Operations { var contextData = context.Get(); - if (contextData.DbAccountInfo == null || - contextData.DbAccountInfo.LastBattleTime < contextData.AccountInfo?.LastBattleTime) - { - if (next != null) return next.Invoke(context); - } - _logger.LogInformation($"Exiting without saving. Db LastBattleTime: {contextData.DbAccountInfo?.LastBattleTime}, WG LastBattleTime: {contextData.AccountInfo?.LastBattleTime}"); - return Task.CompletedTask; + contextData.NeedToSaveData = contextData.DbAccountInfo == null || + contextData.DbAccountInfo.LastBattleTime < + contextData.AccountInfo?.LastBattleTime; + return next != null ? next.Invoke(context) : Task.CompletedTask; } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/Operations/SaveAccountAndTanksOperation.cs b/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/Operations/SaveAccountAndTanksOperation.cs index a1805a3..7fe5702 100644 --- a/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/Operations/SaveAccountAndTanksOperation.cs +++ b/WotBlitzStatisticsPro.Logic/AccountInformationPipeline/Operations/SaveAccountAndTanksOperation.cs @@ -26,6 +26,13 @@ namespace WotBlitzStatisticsPro.Logic.AccountInformationPipeline.Operations { var contextData = context.Get(); + if (!contextData.NeedToSaveData) + { + _logger.LogInformation($"Proceeding without saving. Db LastBattleTime: {contextData.DbAccountInfo?.LastBattleTime}, WG LastBattleTime: {contextData.AccountInfo?.LastBattleTime}"); + if (next != null) await next.Invoke(context); + return; + } + if (contextData?.AccountInfo == null || contextData?.AccountInfoHistory == null || contextData?.Tanks == null ||