<?php
namespace AppBundle\EventListener;
use AppBundle\Services\Listeners\OrderListenerService;
use AppBundle\Services\Listeners\PatchListenerService;
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\Patch;
use Pimcore\Model\DataObject\Pattern;
class DataObjectPostAddListener
{
/**
* @var OrderListenerService
*/
protected $orderListenerService;
/**
* @var PatternListenerService
*/
protected $patternListenerService;
/**
* @var SkuListenerService
*/
protected $skuListenerService;
/**
* @var PatchListenerService
*/
protected $patchListenerService;
/**
* DataObjectPostAddListener constructor.
* @param OrderListenerService $orderListenerService
* @param PatternListenerService $patternListenerService
* @param SkuListenerService $skuListenerService
* @param PatchListenerService $patchListenerService
*/
public function __construct(
OrderListenerService $orderListenerService,
PatternListenerService $patternListenerService,
SkuListenerService $skuListenerService,
PatchListenerService $patchListenerService
)
{
$this->orderListenerService = $orderListenerService;
$this->patternListenerService = $patternListenerService;
$this->skuListenerService = $skuListenerService;
$this->patchListenerService = $patchListenerService;
}
/**
* @param DataObjectEvent $event
* @throws Exception
*/
public function onPostAdd(DataObjectEvent $event)
{
/** @var DataObject $object */
$object = $event->getObject();
switch (true) {
case $object instanceof Patch:
if ($object->getPublished() && !Pimcore::$adminMode) {
$this->patchListenerService->postAddAndPreUpdateEvent($object);
}
break;
case $object instanceof Pattern:
if ($object->getPublished() && !Pimcore::$adminMode) {
$this->patternListenerService->postAddAndPreUpdateEvent($object);
}
break;
case $object instanceof Order:
if ($object->getPublished() && !Pimcore::$adminMode) {
$this->orderListenerService->postAddAndPreUpdateEvent($object);
}
break;
default:
break;
}
}
}