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 ||