using Managing.Application.Workers; using Managing.Application.Workers.Abstractions; using static Managing.Common.Enums; namespace Managing.Api.Workers.Workers; public abstract class PricesBaseWorker : BaseWorker where T : class { private readonly IPricesService _pricesService; private readonly IStatisticService _statisticService; private readonly Timeframe _timeframe; public PricesBaseWorker( ILogger logger, IPricesService pricesService, IWorkerService workerService, IStatisticService statisticService, TimeSpan delay, WorkerType workerType, Timeframe timeframe) : base( workerType, logger, delay, workerService ) { _pricesService = pricesService; _statisticService = statisticService; _timeframe = timeframe; } private List _eligibleTickers = new List { Ticker.BTC, Ticker.ETH, Ticker.BNB, Ticker.DOGE, Ticker.ADA, Ticker.SOL, Ticker.XRP, Ticker.LINK, Ticker.RENDER, Ticker.SUI, Ticker.GMX, Ticker.ARB, Ticker.PEPE, Ticker.PENDLE, Ticker.AAVE, Ticker.HYPE }; protected override async Task Run(CancellationToken cancellationToken) { var tickers = await _statisticService.GetTickers(); var filteredTickers = tickers .Where(t => _eligibleTickers.Contains(t)) .ToList(); // Filter with the eligible tickers foreach (var ticker in filteredTickers) { await _pricesService.UpdatePrice(TradingExchanges.Evm, ticker, _timeframe); } } }