<?php
namespace AppBundle\EventListeners;
use Carbon\Carbon;
use Pimcore;
use Pimcore\Event\Model\ElementEventInterface;
use Pimcore\Model\DataObject\Product;
class UnavailabilityVerifier
{
/**
* @param ElementEventInterface $e
*/
public function handleEvent(ElementEventInterface $e)
{
if (!$e instanceof Pimcore\Event\Model\DataObjectEvent) {
return;
}
$object = $e->getObject();
if (!$object instanceof Product) {
return;
}
if (!method_exists($object, 'getUnavailability') || !method_exists($object, 'getUnavailableUntilDate')) {
return;
}
if ($object->getUnavailability() === true && $object->getUnavailableUntilDate()) {
if (Carbon::now()->gt($object->getUnavailableUntilDate())) {
$object->setUnavailability(false);
}
}
foreach ($object->getColors() as $colorMetaData) {
if ($colorMetaData->unavailable === true && $object->getUnavailableUntilDate()) {
if (Carbon::now()->gt(new Carbon($object->getUnavailableUntilDate()))) {
$object->setUnavailable(false);
}
}
}
}
}