src/EventSubscriber/OrderStatusDefaultSubscriber.php line 33
<?phpnamespace App\EventSubscriber;use ApiPlatform\Symfony\EventListener\EventPriorities;use App\Document\Parameters\OrderStatus;use Doctrine\ODM\MongoDB\DocumentManager;use Doctrine\ODM\MongoDB\MongoDBException;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpKernel\Event\ViewEvent;use Symfony\Component\HttpKernel\KernelEvents;class OrderStatusDefaultSubscriber implements EventSubscriberInterface{public function __construct(private readonly DocumentManager $manager){}/*** @return array<string, mixed>*/public static function getSubscribedEvents(): array{return [KernelEvents::VIEW => ['setDefaultOrderStatus', EventPriorities::PRE_WRITE],];}/*** @throws MongoDBException*/public function setDefaultOrderStatus(ViewEvent $event): void{$orderStatus = $event->getControllerResult();$method = $event->getRequest()->getMethod();if (!$orderStatus instanceof OrderStatus || !in_array($method, [Request::METHOD_POST, Request::METHOD_PUT])) {return;}$isDefault = $orderStatus->isDefault();if ($isDefault) {// Créer une requête pour mettre à jour les documents qui ne sont pas l'objet courant$queryBuilder = $this->manager->createQueryBuilder(OrderStatus::class)->updateMany()->field('id')->notEqual($orderStatus->getId())->field('isDefault')->set(false);// Exécuter la requête$queryBuilder->getQuery()->execute();}}}