<?php
namespace App\EventListener;
use App\Message\HelpdeskMessage;
use App\Services\Functions;
use Pimcore\Event\Model\ElementEventInterface;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Log\ApplicationLogger;
use Symfony\Component\Messenger\MessageBusInterface;
use Carbon\Carbon;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\Helpdesk;
class HelpdeskListener
{
private $bus;
public function __construct(MessageBusInterface $bus)
{
$this->bus = $bus;
}
public function onPreAdd (ElementEventInterface $e) {
if ($e instanceof DataObjectEvent) {
$object = $e->getObject();
if($object instanceof Helpdesk){
/** $pathConvention could be "/restricted-assets/{MembersKey}-{MembersUsername}" */
$pathConvention = Functions::getHelpdeskPathConvention([Carbon::today()->toDateString()]);
// Check Asset folder
$folder = DataObject\Folder::getByPath('/helpdesk/'.$pathConvention);
if(!($folder instanceof DataObject\Folder))
$folder = DataObject\Service::createFolderByPath('/helpdesk/'.$pathConvention);
$time = Carbon::now();
$object->setParentId($folder->getId());
$object->setKey(\Pimcore\Model\Element\Service::getValidKey($object->getEmail().'-'.$time->getTimestamp(), 'object'));
$object->setStatus('open');
}
}
}
public function onPreUpdate (ElementEventInterface $e) {
if ($e instanceof DataObjectEvent) {
$object = $e->getObject();
if($object instanceof Helpdesk){
}
}
}
public function onPostAdd (ElementEventInterface $e) {
if ($e instanceof DataObjectEvent) {
$object = $e->getObject();
if($object instanceof Helpdesk){
$this->bus->dispatch(new HelpdeskMessage($object));
}
}
}
}