custom/plugins/CogiSurvey/src/Subscriber/SurveySubscriber.php line 36

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Cogi\CogiSurvey\Subscriber;
  3. use Cogi\CogiSurvey\Core\Content\Survey\SurveyEntity;
  4. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  6. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  7. use Shopware\Core\Framework\DataAbstractionLayer\Search\Sorting\FieldSorting;
  8. use Shopware\Core\Framework\Struct\ArrayEntity;
  9. use Shopware\Storefront\Page\Checkout\Finish\CheckoutFinishPageLoadedEvent;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. class SurveySubscriber implements EventSubscriberInterface
  12. {
  13.     /**
  14.      * @var EntityRepositoryInterface
  15.      */
  16.     private $surveyRepository;
  17.     
  18.     public function __construct(
  19.         EntityRepositoryInterface $surveyRepository)
  20.     {
  21.         $this->surveyRepository $surveyRepository;
  22.     }
  23.     public static function getSubscribedEvents(): array
  24.     {
  25.         return[
  26.             CheckoutFinishPageLoadedEvent::class => 'onConfirmPageLoaded',
  27.         ];
  28.     }
  29.     public function onConfirmPageLoaded (CheckoutFinishPageLoadedEvent $event): void
  30.     {
  31.         $criteria = new Criteria();
  32.         $criteria->addFilter(new EqualsFilter('active'1));
  33.         $criteria->addSorting(new FieldSorting('cogi_survey.position'FieldSorting::ASCENDING));
  34.         $criteria->getAssociation('answer')
  35.             ->getAssociation('customFields')
  36.             ->addSorting(new FieldSorting('position'));
  37.         /** @var SurveyEntity $survey */
  38.         $survey $this->surveyRepository->search($criteria$event->getContext())->getElements();
  39.         $array = new ArrayEntity([
  40.             'survey' => $survey
  41.         ]);
  42.         $event->getPage()->addExtension('CogiSurvey'$array);
  43.     }
  44. }