src/EventListener/HelpdeskListener.php line 47

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Message\HelpdeskMessage;
  4. use App\Services\Functions;
  5. use Pimcore\Event\Model\ElementEventInterface;
  6. use Pimcore\Event\Model\DataObjectEvent;
  7. use Pimcore\Log\ApplicationLogger;
  8. use Symfony\Component\Messenger\MessageBusInterface;
  9. use Carbon\Carbon;
  10. use Pimcore\Model\DataObject;
  11. use Pimcore\Model\DataObject\Helpdesk;
  12. class HelpdeskListener
  13. {
  14.     private $bus;
  15.     public function __construct(MessageBusInterface $bus)
  16.     {
  17.         $this->bus $bus;
  18.     }
  19.     public function onPreAdd (ElementEventInterface $e) {
  20.         if ($e instanceof DataObjectEvent) {
  21.             $object $e->getObject();
  22.             if($object instanceof Helpdesk){
  23.                 /**  $pathConvention could be "/restricted-assets/{MembersKey}-{MembersUsername}" */
  24.                 $pathConvention Functions::getHelpdeskPathConvention([Carbon::today()->toDateString()]);
  25.                 // Check Asset folder
  26.                 $folder DataObject\Folder::getByPath('/helpdesk/'.$pathConvention);
  27.                 if(!($folder instanceof DataObject\Folder))
  28.                     $folder DataObject\Service::createFolderByPath('/helpdesk/'.$pathConvention);
  29.                 $time Carbon::now();
  30.                 $object->setParentId($folder->getId());
  31.                 $object->setKey(\Pimcore\Model\Element\Service::getValidKey($object->getEmail().'-'.$time->getTimestamp(), 'object'));
  32.                 $object->setStatus('open');
  33.             }
  34.         }
  35.     }
  36.     public function onPreUpdate (ElementEventInterface $e) {
  37.         if ($e instanceof DataObjectEvent) {
  38.             $object $e->getObject();
  39.             if($object instanceof Helpdesk){
  40.             }
  41.         }
  42.     }
  43.     public function onPostAdd (ElementEventInterface $e) {
  44.         if ($e instanceof DataObjectEvent) {
  45.             $object $e->getObject();
  46.             if($object instanceof Helpdesk){
  47.                 $this->bus->dispatch(new HelpdeskMessage($object));
  48.             }
  49.         }
  50.     }
  51. }