Files

49 lines
1.8 KiB
C#
Raw Permalink Normal View History

using System;
using System.Linq;
using System.Threading.Tasks;
using WotBlitzStatisticsPro.DataAccess;
2020-11-17 12:36:02 +01:00
using WotBlitzStatisticsPro.Logic.AccountInformationPipeline.OperationContext;
using WotBlitzStatisticsPro.Logic.Calculations;
using WotBlitzStatisticsPro.Logic.Pipeline;
namespace WotBlitzStatisticsPro.Logic.AccountInformationPipeline.Operations
{
2020-11-17 12:36:02 +01:00
public class CalculateStatisticsOperation : IOperation<IOperationContext>
{
private readonly IDictionariesDataAccessor _dictionariesDataAccessor;
public CalculateStatisticsOperation(IDictionariesDataAccessor dictionariesDataAccessor)
{
_dictionariesDataAccessor = dictionariesDataAccessor;
}
2020-12-27 12:39:25 +01:00
public async Task Invoke(IOperationContext context, Func<IOperationContext, Task>? next)
{
2020-11-17 12:36:02 +01:00
var contextData = context.Get<AccountInformationPipelineContextData>();
2020-12-27 12:39:25 +01:00
if (contextData?.AccountInfo == null ||
contextData?.AccountInfoHistory == null ||
contextData?.Tanks == null ||
contextData?.TanksHistory == null)
{
return;
}
2020-11-17 12:36:02 +01:00
var tankIds = contextData.Tanks.Select(t => t.TankId).ToArray();
var tankTires = await _dictionariesDataAccessor.GetTankTires(tankIds);
2020-11-17 12:36:02 +01:00
foreach (var tankInfoHistory in contextData.TanksHistory)
{
if (!tankTires.ContainsKey(tankInfoHistory.Key))
{
continue;
}
tankInfoHistory.Value.CalculateWn7(tankTires[tankInfoHistory.Key]);
}
2020-11-17 12:36:02 +01:00
contextData.AccountInfoHistory.CalculateMiddleTier(contextData.TanksHistory.Values.ToList(), tankTires);
contextData.AccountInfoHistory.CalculateWn7();
2020-12-27 12:39:25 +01:00
if (next != null) await next.Invoke(context);
}
}
}