<?php
declare(strict_types=1);

namespace Autogedal\Manufacturers\Cron;

use Autogedal\Manufacturers\Model\Config;
use Autogedal\Manufacturers\Service\FeaturedProductsUpdater;
use Psr\Log\LoggerInterface;

class UpdateFeaturedProducts
{
    public function __construct(
        private readonly FeaturedProductsUpdater $featuredProductsUpdater,
        private readonly Config $config,
        private readonly LoggerInterface $logger
    ) {
    }

    public function execute(): void
    {
        if (!$this->config->isEnabled()) {
            return;
        }

        try {
            $this->logger->info('Cron Autogedal_Manufacturers: Start updating featured products.');
            $updatedPages = $this->featuredProductsUpdater->updatePages();
            $this->logger->info(
                sprintf(
                    'Cron Autogedal_Manufacturers: Finished updating featured products, %d page(s) changed.',
                    $updatedPages
                )
            );
        } catch (\Throwable $exception) {
            $this->logger->error(
                'Cron Autogedal_Manufacturers Error: ' . $exception->getMessage(),
                ['exception' => $exception]
            );
        }
    }
}
