<?php

namespace Autogedal\Extend\Observer;

use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Event\Observer;
use Magento\InventoryCatalog\Model\ResourceModel\SetDataToLegacyStockItem;
use Magento\Catalog\Api\ProductRepositoryInterface;

class OutOfStockZeroQty implements ObserverInterface
{
    /**
     * @var ProductRepositoryInterface
     */
    protected $productRepository;

    /**
     * @var SetDataToLegacyStockItem
     */
    private $setDataToLegacyStockItem;

    public function __construct(
        SetDataToLegacyStockItem $setDataToLegacyStockItem,
        ProductRepositoryInterface $productRepository
    ) {
        $this->setDataToLegacyStockItem = $setDataToLegacyStockItem;
        $this->productRepository = $productRepository;
    }

    /**
     * @param Observer $observer
     */
    public function execute(Observer $observer)
    {
        try {
            $item = $observer->getItem();
            $product = $this->productRepository->getById($item->getProductId());
            if ($item->getQty() <= 0 && $product->getManufacturer() != "12017") {
                $this->setDataToLegacyStockItem->execute(
                    (string)$product->getData('sku'),
                    (float)$item->getQty(),
                    false
                );
            }
        } catch (LocalizedException $exception) {
            $areaCode = null;
        }
    }
}
