<?php

namespace Autogedal\Extend\Observer;

use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Autogedal\Extend\Model\RedirectManager;
use Psr\Log\LoggerInterface;

class CreateRedirectObserver implements ObserverInterface
{
    protected $redirectManager;
    protected $logger;

    public function __construct(
        RedirectManager $redirectManager,
        LoggerInterface $logger
    ) {
        $this->redirectManager = $redirectManager;
        $this->logger = $logger;
    }

    /**
     * Handle product save events to create redirects when product is disabled
     */
    public function execute(Observer $observer)
    {
        try {
            $product = $observer->getEvent()->getProduct();
            
            if ($this->isProductBeingDisabled($product)) {
                $this->logger->info("Product being disabled: " . $product->getId());
                $this->redirectManager->createRedirectForDisabledProduct($product);
            }
            
        } catch (\Exception $e) {
            $this->logger->error("Error in CreateRedirectObserver: " . $e->getMessage());
        }
    }

    /**
     * Check if product is being disabled
     */
    private function isProductBeingDisabled($product)
    {
        $currentStatus = $product->getStatus();
        $originalStatus = $product->getOrigData('status');
        
        return ($originalStatus == \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED 
                && $currentStatus == \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED);
    }
}

