src/EventListener/VendorRegisterListener.php line 49

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file has been created by developers from BitBag.
  4.  * Feel free to contact us once you face any issues or want to start
  5.  * You can find more information about us on https://bitbag.io and write us
  6.  * an email on hello@bitbag.io.
  7.  */
  8. declare(strict_types=1);
  9. namespace BitBag\OpenMarketplace\EventListener;
  10. use BitBag\OpenMarketplace\Entity\VendorImageInterface;
  11. use BitBag\OpenMarketplace\Entity\VendorInterface;
  12. use BitBag\OpenMarketplace\Generator\VendorSlugGeneratorInterface;
  13. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  14. use Sylius\Component\Core\Uploader\ImageUploaderInterface;
  15. final class VendorRegisterListener
  16. {
  17.     private VendorSlugGeneratorInterface $vendorSlugGenerator;
  18.     private ImageUploaderInterface $fileUploader;
  19.     public function __construct(
  20.         VendorSlugGeneratorInterface $vendorSlugGenerator,
  21.         ImageUploaderInterface $fileUploader
  22.     ) {
  23.         $this->vendorSlugGenerator $vendorSlugGenerator;
  24.         $this->fileUploader $fileUploader;
  25.     }
  26.     public function uploadImage(ResourceControllerEvent $event): void
  27.     {
  28.         /** @var VendorInterface $vendor */
  29.         $vendor $event->getSubject();
  30.         /** @var VendorImageInterface $vendorImage */
  31.         $vendorImage $vendor->getImage();
  32.         if (null !== $vendorImage) {
  33.             $this->fileUploader->upload($vendorImage);
  34.             $vendorImage->setOwner($vendor);
  35.         }
  36.     }
  37.     public function generateSlug(ResourceControllerEvent $event): void
  38.     {
  39.         /** @var VendorInterface $vendor */
  40.         $vendor $event->getSubject();
  41.         if (null === $vendor->getCompanyName()) {
  42.             throw new \Exception('Company name cannot be empty.');
  43.         }
  44.         $vendor->setSlug($this->vendorSlugGenerator->generateSlug($vendor->getCompanyName()));
  45.     }
  46. }