vendor/bluue/dhl-bundle/src/EventSubscriber/ConfigureCarriersForEditOrderCarrierSubscriber.php line 52

Open in your IDE?
  1. <?php
  2. /**
  3.  * @author Thomas HERISSON (contact@scaledev.fr)
  4.  * @copyright 2021 - ScaleDEV SAS, 12 RUE CHARLES MORET, 10120 ST ANDRE LES VERGERS
  5.  * @license commercial
  6.  */
  7. declare(strict_types=1);
  8. namespace Bluue\DhlBundle\EventSubscriber;
  9. use Bluue\ShipmentsBundle\Repository\CarrierRepository;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Bluue\ShipmentsBundle\Event\ConfigurationCarriersForEditOrderCarrierEvent;
  12. use App\Services\Context as ContextService;
  13. class ConfigureCarriersForEditOrderCarrierSubscriber implements EventSubscriberInterface
  14. {
  15.     /**
  16.      * @var CarrierRepository $carrierRepo
  17.      */
  18.     private CarrierRepository $carrierRepo;
  19.     /**
  20.      * @var ContextService $contextService
  21.      */
  22.     private ContextService $contextService;
  23.     public function __construct(
  24.         CarrierRepository $carrierRepo,
  25.         ContextService $contextService
  26.     ) {
  27.         $this->carrierRepo $carrierRepo;
  28.         $this->contextService $contextService;
  29.     }
  30.     /**
  31.      * @return array
  32.      */
  33.     public static function getSubscribedEvents(): array
  34.     {
  35.         return [
  36.             ConfigurationCarriersForEditOrderCarrierEvent::NAME => 'onLoad'
  37.         ];
  38.     }
  39.     /**
  40.      * @param ConfigurationCarriersForEditOrderCarrierEvent $event
  41.      * @return void
  42.      */
  43.     public function onLoad(ConfigurationCarriersForEditOrderCarrierEvent $event): void
  44.     {
  45.         $allCarriers $event->getCarriers();
  46.         $order $event->getOrder();
  47.         $context $order $order->getContext() : $this->contextService->getActualOrDefault();
  48.         $carriers $this->carrierRepo->createQueryBuilder('c')
  49.             ->where('c.module = :module')->setParameter('module''dhlexpress')
  50.             ->leftJoin('c.carrierContexts''carrierContexts')
  51.             ->leftJoin('carrierContexts.context''context')
  52.             ->andWhere('context.id = :context_id')
  53.             ->setParameter('context_id'$context->getId()->toBinary());
  54.         foreach ($carriers->getQuery()->getResult() as $carrier) {
  55.             $allCarriers[] = $carrier;
  56.         }
  57.         $event->setCarriers($allCarriers);
  58.     }
  59. }