src/EventSubscriber/AcheterEventSubscriber.php line 27
<?phpnamespace App\EventSubscriber;use App\Entity\Acheter;use App\Service\NotificationService;use ApiPlatform\Symfony\EventListener\EventPriorities;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpKernel\Event\ViewEvent;use Symfony\Component\HttpKernel\KernelEvents;class AcheterEventSubscriber implements EventSubscriberInterface{public function __construct(private NotificationService $notificationService) {}public static function getSubscribedEvents(): array{return [KernelEvents::VIEW => ['createNotification', EventPriorities::POST_WRITE],];}public function createNotification(ViewEvent $event): void{$acheter = $event->getControllerResult();$method = $event->getRequest()->getMethod();// Ne traiter que les requêtes POST pour créer une notificationif (!$acheter instanceof Acheter || Request::METHOD_POST !== $method) {return;}// Vérifier que l'achat a bien été créé (a un ID)if (!$acheter->getId()) {return;}try {$user = $acheter->getClient();if (!$user) {return;}// Récupérer les informations du pack$pack = $acheter->getPackAcheter();if (!$pack) {return;}// Calculer le montant total (on suppose qu'on crée un seul achat à la fois via l'API)// Si plusieurs achats sont créés, chaque création déclenchera une notification$montantPack = (float) $pack->getMontantPack();// Créer la notification$this->notificationService->createPurchaseNotification($user,1, // nombre de packs (1 par appel API)$montantPack);} catch (\Exception $e) {// Logger l'erreur mais ne pas faire échouer la requêteerror_log('Erreur création notification achat (EventSubscriber): ' . $e->getMessage());}}}