<?php
namespace AppBundle\EventListener;
use AppBundle\Services\Listeners\OrderListenerService;
use AppBundle\Services\Listeners\PatternListenerService;
use AppBundle\Services\Listeners\SkuListenerService;
use Exception;
use Pimcore;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\Order;
use Pimcore\Model\DataObject\Pattern;
use Pimcore\Model\DataObject\Sku;
class DataObjectPreAddListener
{
/**
* @var OrderListenerService
*/
protected $orderListenerService;
/**
* @var PatternListenerService
*/
protected $patternListenerService;
/**
* @var SkuListenerService
*/
protected $skuListenerService;
/**
* DataObjectPreAddListener constructor.
* @param OrderListenerService $orderListenerService
* @param PatternListenerService $patternListenerService
* @param SkuListenerService $skuListenerService
*/
public function __construct(
OrderListenerService $orderListenerService,
PatternListenerService $patternListenerService,
SkuListenerService $skuListenerService
)
{
$this->orderListenerService = $orderListenerService;
$this->patternListenerService = $patternListenerService;
$this->skuListenerService = $skuListenerService;
}
/**
* @param DataObjectEvent $event
* @throws Exception
*/
public function onPreAdd(DataObjectEvent $event)
{
/** @var DataObject $object */
$object = $event->getObject();
switch (true) {
case $object instanceof Sku:
if (!Pimcore::$adminMode) {
$this->skuListenerService->preAdd($object);
}
break;
case $object instanceof Pattern:
if (!Pimcore::$adminMode) {
$this->patternListenerService->preAdd($object);
}
break;
case $object instanceof Order:
if (!Pimcore::$adminMode) {
$this->orderListenerService->preAdd($object);
}
break;
default:
break;
}
}
}