src/EventSubscriber/Pieza/PiezaCompradaEventSubscriber.php line 34

  1. <?php
  2. namespace App\EventSubscriber\Pieza;
  3. use App\Event\Pieza\PiezaCompradaEvent;
  4. use App\Repository\PiezasCompradasRepository;
  5. use App\Service\Parametro\ParametroService;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Mailer\MailerInterface;
  8. use Symfony\Component\Mime\Email;
  9. class PiezaCompradaEventSubscriber implements EventSubscriberInterface
  10. {
  11.     private MailerInterface $mailer;
  12.     private PiezasCompradasRepository $piezasCompradasRepository;
  13.     private ParametroService $parametroService;
  14.     public function __construct(MailerInterface $mailer
  15.                                 PiezasCompradasRepository $piezasCompradasRepository,
  16.                                 ParametroService $parametroService)
  17.     {
  18.         $this->mailer $mailer;
  19.         $this->piezasCompradasRepository $piezasCompradasRepository;
  20.         $this->parametroService $parametroService;
  21.     }
  22.     public static function getSubscribedEvents()
  23.     {
  24.         return [
  25.             PiezaCompradaEvent::class => ['onPiezaComprada']
  26.         ];
  27.     }
  28.     public function onPiezaComprada(PiezaCompradaEvent $event):void {
  29.         $sendEmail $this->parametroService->getAvisoNuevaCompra();
  30.         if($sendEmail) {
  31.             $piezaComprada $this->piezasCompradasRepository->findOneBy(['id' => $event->getPiezaCompradaId()]);
  32.             $emailTo $this->parametroService->getCorreoAvisoNuevaCompra();
  33.             $email = (new Email())
  34.             ->from('avisos@cidon.es')
  35.             ->to($emailTo)
  36.             //->cc('cc@example.com')
  37.             //->bcc('bcc@example.com')
  38.             //->replyTo('fabien@example.com')
  39.             //->priority(Email::PRIORITY_HIGH)
  40.             ->subject('Nueva pieza comprada')
  41.             ->text('El usuario '$piezaComprada->getUser()->nombreCompleto() .
  42.                    ' (' $piezaComprada->getUser()->getEmail() . ') ' .
  43.                    ' ha comprado la pieza '$piezaComprada->getPieza()->getNombre() .
  44.                    ' por un importe de ' $piezaComprada->getPrecio() . ' €.'
  45.             );
  46.             // ->html('<p>Hola usuario <b>JULIO</b>!</p>');
  47.             
  48.             $this->mailer->send($email);
  49.         }        
  50.     }
  51. }