<?php
declare(strict_types=1);

namespace Autogedal\Manufacturers\Observer;

use Autogedal\Manufacturers\Service\ManufacturerGenerator;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Message\ManagerInterface;
use Psr\Log\LoggerInterface;

class ConfigChangeObserver implements ObserverInterface
{
    public function __construct(
        private readonly ManufacturerGenerator $generator,
        private readonly ManagerInterface $messageManager,
        private readonly LoggerInterface $logger
    ) {
    }

    public function execute(Observer $observer): void
    {
        try {
            $this->generator->generate();

            $this->messageManager->addSuccessMessage(
                __('Manufacturer pages and exclusions have been successfully updated and synchronized.')
            );
        } catch (\Throwable $exception) {
            $this->logger->error(
                'Autogedal_Manufacturers Config Save Error: ' . $exception->getMessage(),
                ['exception' => $exception]
            );

            $this->messageManager->addErrorMessage(
                __('An error occurred while generating manufacturer pages. Please check the logs for details.')
            );
        }
    }
}
