custom/plugins/GbmedEnev/src/Subscriber/ImportExport.php line 72

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. /**
  3.  * gb media
  4.  * All Rights Reserved.
  5.  *
  6.  * Unauthorized copying of this file, via any medium is strictly prohibited.
  7.  * The content of this file is proprietary and confidential.
  8.  *
  9.  * @category       Shopware
  10.  * @package        Shopware_Plugins
  11.  * @subpackage     GbmedEnev
  12.  * @copyright      Copyright (c) 2019, gb media
  13.  * @license        proprietary
  14.  * @author         Giuseppe Bottino
  15.  * @link           http://www.gb-media.biz
  16.  */
  17. namespace Gbmed\Enev\Subscriber;
  18. use Gbmed\Enev\Core\Content\Enev\EnevDefinition;
  19. use Gbmed\Enev\Service\ImportExport as ImportExportService;
  20. use Shopware\Core\Content\ImportExport\Event\ImportExportBeforeExportRecordEvent;
  21. use Shopware\Core\Content\ImportExport\Event\ImportExportBeforeImportRecordEvent;
  22. use Shopware\Core\Framework\Context;
  23. use Shopware\Core\Framework\Uuid\Uuid;
  24. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  25. class ImportExport implements EventSubscriberInterface
  26. {
  27.     private ImportExportService $productService;
  28.     /**
  29.      * @param ImportExportService $productService
  30.      */
  31.     public function __construct(
  32.         ImportExportService $productService
  33.     ) {
  34.         $this->productService $productService;
  35.     }
  36.     public static function getSubscribedEvents(): array
  37.     {
  38.         return [
  39.             ImportExportBeforeExportRecordEvent::class => 'onExportRecord',
  40.             ImportExportBeforeImportRecordEvent::class => 'onImportRecord',
  41.         ];
  42.     }
  43.     /**
  44.      * @param ImportExportBeforeExportRecordEvent $event
  45.      */
  46.     public function onExportRecord(ImportExportBeforeExportRecordEvent $event): void
  47.     {
  48.         if($event->getConfig()->get('sourceEntity') !== EnevDefinition::ENTITY_NAME){
  49.             return;
  50.         }
  51.         $record $event->getRecord();
  52.         $context Context::createDefaultContext();
  53.         $product $this->productService->findProductById($record['product'], $context);
  54.         if ($product) {
  55.             $record['product'] = $product->getProductNumber();
  56.         }
  57.         $event->setRecord($record);
  58.     }
  59.     /**
  60.      * @param ImportExportBeforeImportRecordEvent $event
  61.      */
  62.     public function onImportRecord(ImportExportBeforeImportRecordEvent $event): void
  63.     {
  64.         if($event->getConfig()->get('sourceEntity') !== EnevDefinition::ENTITY_NAME){
  65.             return;
  66.         }
  67.         $context $event->getContext();
  68.         $row $event->getRow();
  69.         $record array_merge(
  70.             $event->getRecord(),
  71.             [
  72.                 'productId' => $row['product'],
  73.                 'mediaId' => $row['media'],
  74.                 'datasheetId' => $row['datasheet'],
  75.                 'iconId' => $row['icon'],
  76.             ]
  77.         );
  78.         $record $this->productService->getMedias($record$context);
  79.         $product $this->productService->findProductByNumber($record['productId'], $context);
  80.         if ($product) {
  81.             $record['productId'] = $product->getId();
  82.         }
  83.         $event->setRecord($this->productService->prepareData($record));
  84.     }
  85. }