using Managing.Application.Abstractions.Services;
using Managing.Application.Workers;
using Managing.Application.Workers.Abstractions;
using Managing.Common;

namespace Managing.Api.Workers.Workers;

public class SpotlightWorker : BaseWorker<SpotlightWorker>
{
    private readonly IStatisticService _statisticService;

    public SpotlightWorker(
        ILogger<SpotlightWorker> logger,
        IWorkerService workerService,
        IStatisticService statisticService) : base(
        Enums.WorkerType.Spotlight,
        logger,
        TimeSpan.FromMinutes(5),
        workerService)
    {
        _statisticService = statisticService;
    }

    protected override async Task Run(CancellationToken cancellationToken)
    {
        try
        {
            await _statisticService.UpdateSpotlight();
        }
        catch (Exception ex)
        {
            _logger.LogError("Enable to update spotlight", ex);
            throw;
        }
    }
}