/// <summary> /// Обновление дерева последними зарегистрированными транзакциями /// </summary> public async Task UpdateTree() { var lastUpdate = await _dbContext.UpdateHistory.OrderByDescending(a => a.CreationTime).FirstOrDefaultAsync(_cancellationToken); //Получаем элементы в порядке убывания поддержки var order = await _productsService.GetOrderedProducts(); if (lastUpdate == null) //FP-дерево не создано { await BuildNewTree(order); } else { var transactions = await _transactionsService.GetLastTransactions(lastUpdate.CreationTime); var tree = await _fpTreeProvider.GetActualFpTree(); var root = tree.Single(a => a.Id == lastUpdate.RootId); PushTransactions(transactions, order, root); _dbContext.UpdateHistory.Add(new FpTreeUpdateInfo(root.Id, DateTimeOffset.UtcNow)); } await _dbContext.SaveChangesAsync(_cancellationToken); }