<?php
namespace App\EventSubscriber;
/*
bin/stripe listen --forward-to localhost:4242/cultureroute/public/stripe/webhook
*/
use App\Event\FactureEvent;
use App\Event\OrderEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Psr\Log\LoggerInterface;
use App\Cacher\ShopFactureCacher;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Mailer\MailerInterface;
class FactureEventSubscriber implements EventSubscriberInterface
{
private $entityManager;
private $logger;
public function __construct(LoggerInterface $lifecycleLogger, EntityManagerInterface $entityManager, MailerInterface $mailer)
{
$this->logger = $lifecycleLogger;
$this->entityManager = $entityManager;
$this->mailer = $mailer;
}
public static function getSubscribedEvents() : array
{
return [
FactureEvent::CREATED => 'onFactureCreated',
FactureEvent::UPDATED => 'onFactureUpdated',
FactureEvent::VALIDATED => 'onFactureValidated',
FactureEvent::DELETED => 'onFactureDeleted',
];
}
public function onFactureCreated(FactureEvent $event)
{
$Facture = $event->getFacture();
// Log the event
$this->logger->info(FactureEvent::CREATED, [
'facture'=>$Facture->getId(),
]);
// $this->cacher->delete($Facture);
}
public function onFactureUpdated(FactureEvent $event)
{
$Facture = $event->getFacture();
// Log the event
$this->logger->info(FactureEvent::UPDATED, [
'facture'=>$Facture->getId(),
]);
// $this->cacher->delete($Facture);
}
public function onFactureValidated(FactureEvent $event)
{
$Facture = $event->getFacture();
// Log the event
$this->logger->info(FactureEvent::VALIDATED, [
'facture'=>$Facture->getId(),
]);
// $this->cacher->delete($Facture);
$this->mailer->send((new TemplatedEmail())
// ->to('gabriel@pyreweb.com')
// ->to($prof->getEMail())
->subject('Facturation validée')
->htmlTemplate('enseignant/mail/facturation.html.twig')
->context([
'facture'=>$Facture,
]));
}
public function onFactureDeleted(FactureEvent $event)
{
$Facture = $event->getFacture();
// Log the event
$this->logger->info(FactureEvent::DELETED, [
'facture'=>$Facture->getId(),
]);
// $this->cacher->delete($Facture);
}
}