mirror of
https://github.com/DrMboga/WotBlitzStatisticsBlazor.git
synced 2026-10-27 12:20:05 +01:00
Added tanks stat info operation and calculation tier and Wn7 operation
This commit is contained in:
1 parent
3eeda15491
commit
b343e36e0d
14 files changed
+394
-4
No files matched your search
+6
-1
@@ -1,4 +1,5 @@
|
||||
using WotBlitzStatisticsPro.Common.Model;
|
||||
using System.Collections.Generic;
|
||||
using WotBlitzStatisticsPro.Common.Model;
|
||||
using WotBlitzStatisticsPro.DataAccess.Model.Accounts;
|
||||
|
||||
namespace WotBlitzStatisticsPro.Logic.AccountInformationPipeline
|
||||
@@ -24,5 +25,9 @@ namespace WotBlitzStatisticsPro.Logic.AccountInformationPipeline
|
||||
|
||||
public AccountInfoHistory AccountInfoHistory { get; set; }
|
||||
|
||||
public List<TankInfo> Tanks { get; set; }
|
||||
|
||||
public Dictionary<long, TankInfoHistory> TanksHistory { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using WotBlitzStatisticsPro.DataAccess;
|
||||
using WotBlitzStatisticsPro.Logic.Calculations;
|
||||
using WotBlitzStatisticsPro.Logic.Pipeline;
|
||||
|
||||
namespace WotBlitzStatisticsPro.Logic.AccountInformationPipeline.Operations
|
||||
{
|
||||
public class CalculateStatisticsOperation : IOperation<AccountInformationPipelineContext>
|
||||
{
|
||||
private readonly IDictionariesDataAccessor _dictionariesDataAccessor;
|
||||
|
||||
public CalculateStatisticsOperation(IDictionariesDataAccessor dictionariesDataAccessor)
|
||||
{
|
||||
_dictionariesDataAccessor = dictionariesDataAccessor;
|
||||
}
|
||||
|
||||
public async Task Invoke(AccountInformationPipelineContext context, Func<AccountInformationPipelineContext, Task> next)
|
||||
{
|
||||
var tankIds = context.Tanks.Select(t => t.TankId).ToArray();
|
||||
var tankTires = await _dictionariesDataAccessor.GetTankTires(tankIds);
|
||||
|
||||
foreach (var tankInfoHistory in context.TanksHistory)
|
||||
{
|
||||
if (!tankTires.ContainsKey(tankInfoHistory.Key))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
tankInfoHistory.Value.CalculateWn7(tankTires[tankInfoHistory.Key]);
|
||||
}
|
||||
|
||||
context.AccountInfoHistory.CalculateMiddleTier(context.TanksHistory.Values.ToList(), tankTires);
|
||||
context.AccountInfoHistory.CalculateWn7();
|
||||
|
||||
await next.Invoke(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
+16
@@ -1,8 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using AutoMapper;
|
||||
using WotBlitzStatisticsPro.DataAccess.Model.Accounts;
|
||||
using WotBlitzStatisticsPro.Logic.Pipeline;
|
||||
using WotBlitzStatisticsPro.WgApiClient;
|
||||
using WotBlitzStatisticsPro.WgApiClient.Model;
|
||||
|
||||
namespace WotBlitzStatisticsPro.Logic.AccountInformationPipeline.Operations
|
||||
{
|
||||
@@ -24,6 +27,19 @@ namespace WotBlitzStatisticsPro.Logic.AccountInformationPipeline.Operations
|
||||
var tanksInfo = await
|
||||
_wargamingApi.GetPlayerAccountTanksInfo(context.AccountId, context.RealmType, context.RequestLanguage);
|
||||
|
||||
context.Tanks = new List<TankInfo>();
|
||||
context.TanksHistory = new Dictionary<long, TankInfoHistory>();
|
||||
|
||||
tanksInfo.ForEach(tank =>
|
||||
{
|
||||
context.Tanks.Add(_mapper.Map<WotAccountTanksStatistics, TankInfo>(tank));
|
||||
var stat = _mapper.Map<WotAccountTanksFullStatistics, TankInfoHistory>(tank.All);
|
||||
stat.AccountId = tank.AccountId;
|
||||
stat.TankId = tank.TankId;
|
||||
stat.LastBattleTime = tank.LastBattleTime;
|
||||
context.TanksHistory[stat.TankId] = stat;
|
||||
});
|
||||
|
||||
await next.Invoke(context);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user