public async Task Invoke(IOperationContext context, Func <IOperationContext, Task>?next)
        {
            var contextData = context.Get <AccountInformationPipelineContextData>();

            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 ||
                contextData?.TanksHistory == null)
            {
                return;
            }

            await _accountDataAccessor.AddOurUpdateAccountInfo(contextData.AccountInfo);

            await _accountDataAccessor.AddAccountInfoHistory(contextData.AccountInfoHistory);

            var tanksCount      = 0;
            var tankIdsAsString = new StringBuilder();

            foreach (var tankInfo in contextData.Tanks)
            {
                var tankFromDb = await _accountDataAccessor.ReadTankInfo(tankInfo.AccountId, tankInfo.TankId);

                if (tankFromDb == null || tankInfo.LastBattleTime > tankFromDb.LastBattleTime)
                {
                    await _accountDataAccessor.AddOrUpdateTankInfo(tankInfo);

                    await _accountDataAccessor.AddTankInfoHistory(contextData.TanksHistory[tankInfo.TankId]);

                    tanksCount++;
                    tankIdsAsString.Append($" {tankInfo.TankId}; ");
                }
            }

            _logger.LogInformation($"Updated account {contextData.AccountInfo.AccountId} and {tanksCount} tanks: {tankIdsAsString}");

            if (next != null)
            {
                await next.Invoke(context);
            }
        }