diff --git a/src/Provider/ExcludedAttributesProvider.php b/src/Provider/ExcludedAttributesProvider.php index 31bed66f..59e54fbb 100644 --- a/src/Provider/ExcludedAttributesProvider.php +++ b/src/Provider/ExcludedAttributesProvider.php @@ -5,24 +5,23 @@ namespace Synolia\SyliusAkeneoPlugin\Provider; use Doctrine\Common\Collections\Collection; -use Sylius\Component\Resource\Repository\RepositoryInterface; use Synolia\SyliusAkeneoPlugin\Entity\ProductConfiguration; class ExcludedAttributesProvider implements ExcludedAttributesProviderInterface { - /** @var \Sylius\Component\Resource\Repository\RepositoryInterface */ - private $productConfigurationRepository; + /** @var \Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface */ + private $productConfigurationProvider; - public function __construct(RepositoryInterface $productConfigurationRepository) + public function __construct(ProductConfigurationProviderInterface $productConfigurationProvider) { - $this->productConfigurationRepository = $productConfigurationRepository; + $this->productConfigurationProvider = $productConfigurationProvider; } public function getExcludedAttributes(): array { $excludedAttributeCodes = []; /** @var \Synolia\SyliusAkeneoPlugin\Entity\ProductConfiguration|null $productConfiguration */ - $productConfiguration = $this->productConfigurationRepository->findOneBy([]); + $productConfiguration = $this->productConfigurationProvider->getProductConfiguration(); if (!$productConfiguration instanceof ProductConfiguration) { return []; diff --git a/src/Provider/ProductConfigurationProviderInterface.php b/src/Provider/ProductConfigurationProviderInterface.php new file mode 100644 index 00000000..c8e8727f --- /dev/null +++ b/src/Provider/ProductConfigurationProviderInterface.php @@ -0,0 +1,12 @@ +findOneBy([]); + } } diff --git a/src/Service/ProductChannelEnabler.php b/src/Service/ProductChannelEnabler.php index 46513150..1e81df21 100644 --- a/src/Service/ProductChannelEnabler.php +++ b/src/Service/ProductChannelEnabler.php @@ -11,8 +11,8 @@ use Synolia\SyliusAkeneoPlugin\Entity\ProductConfiguration; use Synolia\SyliusAkeneoPlugin\Exceptions\NoAttributeResourcesException; use Synolia\SyliusAkeneoPlugin\Exceptions\NoProductConfigurationException; +use Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface; use Synolia\SyliusAkeneoPlugin\Repository\ChannelRepository; -use Synolia\SyliusAkeneoPlugin\Repository\ProductConfigurationRepository; final class ProductChannelEnabler { @@ -22,20 +22,20 @@ final class ProductChannelEnabler /** @var \Psr\Log\LoggerInterface */ private $logger; - /** @var \Synolia\SyliusAkeneoPlugin\Repository\ProductConfigurationRepository */ - private $productConfigurationRepository; + /** @var \Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface */ + private $productConfigurationProvider; /** @var \Doctrine\ORM\EntityManagerInterface */ private $entityManager; public function __construct( ChannelRepository $channelRepository, - ProductConfigurationRepository $productConfigurationRepository, + ProductConfigurationProviderInterface $productConfigurationProvider, LoggerInterface $akeneoLogger, EntityManagerInterface $entityManager ) { $this->channelRepository = $channelRepository; - $this->productConfigurationRepository = $productConfigurationRepository; + $this->productConfigurationProvider = $productConfigurationProvider; $this->logger = $akeneoLogger; $this->entityManager = $entityManager; } @@ -83,7 +83,7 @@ public function enableChannelForProduct(ProductInterface $product, array $resour public function getEnabledChannelsAttributeData(ProductInterface $product, array $resource): array { /** @var \Synolia\SyliusAkeneoPlugin\Entity\ProductConfiguration|null $productConfiguration */ - $productConfiguration = $this->productConfigurationRepository->findOneBy([]); + $productConfiguration = $this->productConfigurationProvider->getProductConfiguration(); if (!$productConfiguration instanceof ProductConfiguration) { throw new NoProductConfigurationException('Product Configuration is not configured in BO.'); diff --git a/src/Task/Association/CreateProductAssociationTask.php b/src/Task/Association/CreateProductAssociationTask.php index f339840f..ad0a7357 100644 --- a/src/Task/Association/CreateProductAssociationTask.php +++ b/src/Task/Association/CreateProductAssociationTask.php @@ -16,6 +16,7 @@ use Sylius\Component\Resource\Repository\RepositoryInterface; use Synolia\SyliusAkeneoPlugin\Payload\PipelinePayloadInterface; use Synolia\SyliusAkeneoPlugin\Payload\Product\ProductPayload; +use Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface; use Synolia\SyliusAkeneoPlugin\Repository\ChannelRepository; use Synolia\SyliusAkeneoPlugin\Task\AkeneoTaskInterface; use Synolia\SyliusAkeneoPlugin\Task\Product\AbstractCreateProductEntities; @@ -41,7 +42,7 @@ public function __construct( ChannelRepository $channelRepository, RepositoryInterface $channelPricingRepository, RepositoryInterface $localeRepository, - RepositoryInterface $productConfigurationRepository, + ProductConfigurationProviderInterface $productConfigurationProvider, ProductVariantFactoryInterface $productVariantFactory, FactoryInterface $channelPricingFactory, LoggerInterface $akeneoLogger @@ -53,7 +54,7 @@ public function __construct( $channelRepository, $channelPricingRepository, $localeRepository, - $productConfigurationRepository, + $productConfigurationProvider, $productVariantFactory, $channelPricingFactory, $akeneoLogger diff --git a/src/Task/Product/AbstractCreateProductEntities.php b/src/Task/Product/AbstractCreateProductEntities.php index 22f68b2f..d2026d99 100644 --- a/src/Task/Product/AbstractCreateProductEntities.php +++ b/src/Task/Product/AbstractCreateProductEntities.php @@ -19,6 +19,7 @@ use Synolia\SyliusAkeneoPlugin\Exceptions\NoAttributeResourcesException; use Synolia\SyliusAkeneoPlugin\Exceptions\NoProductConfigurationException; use Synolia\SyliusAkeneoPlugin\Payload\Product\ProductPayload; +use Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface; use Synolia\SyliusAkeneoPlugin\Repository\ChannelRepository; class AbstractCreateProductEntities @@ -52,8 +53,8 @@ class AbstractCreateProductEntities /** @var \Psr\Log\LoggerInterface */ protected $logger; - /** @var \Sylius\Component\Resource\Repository\RepositoryInterface */ - protected $productConfigurationRepository; + /** @var \Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface */ + protected $productConfigurationProvider; public function __construct( EntityManagerInterface $entityManager, @@ -62,7 +63,7 @@ public function __construct( ChannelRepository $channelRepository, RepositoryInterface $channelPricingRepository, RepositoryInterface $localeRepository, - RepositoryInterface $productConfigurationRepository, + ProductConfigurationProviderInterface $productConfigurationProvider, ProductVariantFactoryInterface $productVariantFactory, FactoryInterface $channelPricingFactory, LoggerInterface $akeneoLogger @@ -73,7 +74,7 @@ public function __construct( $this->productRepository = $productRepository; $this->channelRepository = $channelRepository; $this->channelPricingRepository = $channelPricingRepository; - $this->productConfigurationRepository = $productConfigurationRepository; + $this->productConfigurationProvider = $productConfigurationProvider; $this->channelPricingFactory = $channelPricingFactory; $this->localeRepository = $localeRepository; $this->logger = $akeneoLogger; @@ -173,7 +174,7 @@ private function addPriceToChannel( private function getPriceAttributeData(array $attributes): array { /** @var \Synolia\SyliusAkeneoPlugin\Entity\ProductConfiguration|null $productConfiguration */ - $productConfiguration = $this->productConfigurationRepository->findOneBy([]); + $productConfiguration = $this->productConfigurationProvider->getProductConfiguration(); if (!$productConfiguration instanceof ProductConfiguration) { throw new NoProductConfigurationException('Product Configuration is not configured in BO.'); diff --git a/src/Task/Product/AbstractInsertProductImageTask.php b/src/Task/Product/AbstractInsertProductImageTask.php index e07c8afc..7857cb7a 100644 --- a/src/Task/Product/AbstractInsertProductImageTask.php +++ b/src/Task/Product/AbstractInsertProductImageTask.php @@ -12,18 +12,18 @@ use Sylius\Component\Core\Model\ProductVariantInterface; use Sylius\Component\Core\Uploader\ImageUploaderInterface; use Sylius\Component\Resource\Factory\FactoryInterface; -use Sylius\Component\Resource\Repository\RepositoryInterface; use Symfony\Component\HttpFoundation\File\UploadedFile; use Synolia\SyliusAkeneoPlugin\Entity\ProductConfigurationImageMapping; use Synolia\SyliusAkeneoPlugin\Payload\Product\ProductMediaPayloadInterface; +use Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface; class AbstractInsertProductImageTask { /** @var \Sylius\Component\Core\Uploader\ImageUploaderInterface */ protected $imageUploader; - /** @var \Sylius\Component\Resource\Repository\RepositoryInterface */ - protected $productConfigurationRepository; + /** @var \Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface */ + protected $productConfigurationProvider; /** @var \Doctrine\ORM\EntityManagerInterface */ protected $entityManager; @@ -39,13 +39,13 @@ class AbstractInsertProductImageTask public function __construct( ImageUploaderInterface $imageUploader, - RepositoryInterface $productConfigurationRepository, + ProductConfigurationProviderInterface $productConfigurationProvider, EntityManagerInterface $entityManager, FactoryInterface $productImageFactory, LoggerInterface $akeneoLogger ) { $this->imageUploader = $imageUploader; - $this->productConfigurationRepository = $productConfigurationRepository; + $this->productConfigurationProvider = $productConfigurationProvider; $this->entityManager = $entityManager; $this->productImageFactory = $productImageFactory; $this->logger = $akeneoLogger; diff --git a/src/Task/Product/CreateConfigurableProductEntitiesTask.php b/src/Task/Product/CreateConfigurableProductEntitiesTask.php index e374de41..9c44252e 100644 --- a/src/Task/Product/CreateConfigurableProductEntitiesTask.php +++ b/src/Task/Product/CreateConfigurableProductEntitiesTask.php @@ -30,6 +30,7 @@ use Synolia\SyliusAkeneoPlugin\Payload\Product\ProductVariantMediaPayload; use Synolia\SyliusAkeneoPlugin\Provider\AkeneoAttributeProcessorProviderInterface; use Synolia\SyliusAkeneoPlugin\Provider\AkeneoTaskProvider; +use Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface; use Synolia\SyliusAkeneoPlugin\Repository\ChannelRepository; use Synolia\SyliusAkeneoPlugin\Repository\ProductFiltersRulesRepository; use Synolia\SyliusAkeneoPlugin\Repository\ProductGroupRepository; @@ -96,7 +97,7 @@ public function __construct( ChannelRepository $channelRepository, RepositoryInterface $channelPricingRepository, RepositoryInterface $localeRepository, - RepositoryInterface $productConfigurationRepository, + ProductConfigurationProviderInterface $productConfigurationProvider, ProductGroupRepository $productGroupRepository, ProductVariantFactoryInterface $productVariantFactory, FactoryInterface $channelPricingFactory, @@ -116,7 +117,7 @@ public function __construct( $channelRepository, $channelPricingRepository, $localeRepository, - $productConfigurationRepository, + $productConfigurationProvider, $productVariantFactory, $channelPricingFactory, $akeneoLogger diff --git a/src/Task/Product/CreateSimpleProductEntitiesTask.php b/src/Task/Product/CreateSimpleProductEntitiesTask.php index 30e33f15..e01fd0ba 100644 --- a/src/Task/Product/CreateSimpleProductEntitiesTask.php +++ b/src/Task/Product/CreateSimpleProductEntitiesTask.php @@ -21,6 +21,7 @@ use Synolia\SyliusAkeneoPlugin\Event\ProductVariant\AfterProcessingProductVariantEvent; use Synolia\SyliusAkeneoPlugin\Event\ProductVariant\BeforeProcessingProductVariantEvent; use Synolia\SyliusAkeneoPlugin\Exceptions\Attribute\MissingLocaleTranslationException; +use Synolia\SyliusAkeneoPlugin\Exceptions\NoProductConfigurationException; use Synolia\SyliusAkeneoPlugin\Exceptions\NoProductFiltersConfigurationException; use Synolia\SyliusAkeneoPlugin\Logger\Messages; use Synolia\SyliusAkeneoPlugin\Payload\PipelinePayloadInterface; @@ -30,6 +31,7 @@ use Synolia\SyliusAkeneoPlugin\Payload\Product\ProductResourcePayload; use Synolia\SyliusAkeneoPlugin\Provider\AkeneoAttributeDataProviderInterface; use Synolia\SyliusAkeneoPlugin\Provider\AkeneoTaskProvider; +use Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface; use Synolia\SyliusAkeneoPlugin\Repository\ChannelRepository; use Synolia\SyliusAkeneoPlugin\Repository\ProductFiltersRulesRepository; use Synolia\SyliusAkeneoPlugin\Service\SyliusAkeneoLocaleCodeProvider; @@ -91,7 +93,7 @@ public function __construct( RepositoryInterface $productVariantRepository, RepositoryInterface $channelPricingRepository, RepositoryInterface $localeRepository, - RepositoryInterface $productConfigurationRepository, + ProductConfigurationProviderInterface $productConfigurationProvider, FactoryInterface $productFactory, ProductVariantFactoryInterface $productVariantFactory, FactoryInterface $channelPricingFactory, @@ -113,7 +115,7 @@ public function __construct( $channelRepository, $channelPricingRepository, $localeRepository, - $productConfigurationRepository, + $productConfigurationProvider, $productVariantFactory, $channelPricingFactory, $akeneoLogger @@ -140,7 +142,11 @@ public function __invoke(PipelinePayloadInterface $payload): PipelinePayloadInte $this->logger->debug(self::class); $this->type = 'SimpleProduct'; $this->logger->notice(Messages::createOrUpdate($this->type)); - $this->productConfiguration = $this->productConfigurationRepository->findOneBy([]); + $productConfiguration = $this->productConfigurationProvider->getProductConfiguration(); + if (!$productConfiguration instanceof ProductConfiguration) { + throw new NoProductConfigurationException('Product Configuration is not configured in BO.'); + } + $this->productConfiguration = $productConfiguration; /** @var \Synolia\SyliusAkeneoPlugin\Entity\ProductFiltersRules $filters */ $filters = $this->productFiltersRulesRepository->findOneBy([]); diff --git a/src/Task/Product/InsertProductVariantImagesTask.php b/src/Task/Product/InsertProductVariantImagesTask.php index c03053e0..cefb3cee 100644 --- a/src/Task/Product/InsertProductVariantImagesTask.php +++ b/src/Task/Product/InsertProductVariantImagesTask.php @@ -28,7 +28,7 @@ public function __invoke(PipelinePayloadInterface $payload): PipelinePayloadInte $this->cleanImages($productVariant); - $configuration = $this->productConfigurationRepository->findOneBy([]); + $configuration = $this->productConfigurationProvider->getProductConfiguration(); if (!$configuration instanceof ProductConfiguration) { return $payload; diff --git a/src/Task/ProductModel/AddOrUpdateProductModelTask.php b/src/Task/ProductModel/AddOrUpdateProductModelTask.php index f8579f1c..b74890a7 100644 --- a/src/Task/ProductModel/AddOrUpdateProductModelTask.php +++ b/src/Task/ProductModel/AddOrUpdateProductModelTask.php @@ -24,6 +24,7 @@ use Synolia\SyliusAkeneoPlugin\Entity\ProductGroup; use Synolia\SyliusAkeneoPlugin\Event\Product\AfterProcessingProductEvent; use Synolia\SyliusAkeneoPlugin\Event\Product\BeforeProcessingProductEvent; +use Synolia\SyliusAkeneoPlugin\Exceptions\NoProductConfigurationException; use Synolia\SyliusAkeneoPlugin\Exceptions\NoProductFiltersConfigurationException; use Synolia\SyliusAkeneoPlugin\Logger\Messages; use Synolia\SyliusAkeneoPlugin\Payload\PipelinePayloadInterface; @@ -35,6 +36,7 @@ use Synolia\SyliusAkeneoPlugin\Provider\AkeneoAttributeDataProviderInterface; use Synolia\SyliusAkeneoPlugin\Provider\AkeneoFamilyPropertiesProvider; use Synolia\SyliusAkeneoPlugin\Provider\AkeneoTaskProvider; +use Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface; use Synolia\SyliusAkeneoPlugin\Repository\ProductFiltersRulesRepository; use Synolia\SyliusAkeneoPlugin\Repository\ProductTaxonRepository; use Synolia\SyliusAkeneoPlugin\Service\SyliusAkeneoLocaleCodeProvider; @@ -107,8 +109,8 @@ final class AddOrUpdateProductModelTask implements AkeneoTaskInterface /** @var \Sylius\Component\Resource\Repository\RepositoryInterface */ private $productTranslationRepository; - /** @var \Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository */ - private $productConfigurationRepository; + /** @var \Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface */ + private $productConfigurationProvider; /** @var \Sylius\Component\Resource\Factory\FactoryInterface */ private $productTranslationFactory; @@ -149,7 +151,7 @@ public function __construct( AkeneoAttributeDataProviderInterface $akeneoAttributeDataProvider, ProductFiltersRulesRepository $productFiltersRulesRepository, RepositoryInterface $productTranslationRepository, - EntityRepository $productConfigurationRepository, + ProductConfigurationProviderInterface $productConfigurationProvider, FactoryInterface $productTranslationFactory, SlugGeneratorInterface $productSlugGenerator, AkeneoFamilyPropertiesProvider $akeneoFamilyPropertiesProvider, @@ -168,7 +170,7 @@ public function __construct( $this->akeneoAttributeDataProvider = $akeneoAttributeDataProvider; $this->productFiltersRulesRepository = $productFiltersRulesRepository; $this->productTranslationRepository = $productTranslationRepository; - $this->productConfigurationRepository = $productConfigurationRepository; + $this->productConfigurationProvider = $productConfigurationProvider; $this->productTranslationFactory = $productTranslationFactory; $this->productSlugGenerator = $productSlugGenerator; $this->akeneoFamilyPropertiesProvider = $akeneoFamilyPropertiesProvider; @@ -184,7 +186,11 @@ public function __invoke(PipelinePayloadInterface $payload): PipelinePayloadInte $this->type = $payload->getType(); $this->logger->notice(Messages::createOrUpdate($this->type)); $this->payload = $payload; - $this->productConfiguration = $this->productConfigurationRepository->findOneBy([]); + $productConfiguration = $this->productConfigurationProvider->getProductConfiguration(); + if (!$productConfiguration instanceof ProductConfiguration) { + throw new NoProductConfigurationException('Product Configuration is not configured in BO.'); + } + $this->productConfiguration = $productConfiguration; $this->addAttributesToProductTask = $this->taskProvider->get(AddAttributesToProductTask::class); $this->addProductCategoriesTask = $this->taskProvider->get(AddProductToCategoriesTask::class); @@ -359,7 +365,7 @@ private function updateProductRequirementsForActiveLocales( $productTranslation = $this->setProductTranslation($product, $usedLocalesOnBothPlatform, $productName); /** @var ProductConfiguration $configuration */ - $configuration = $this->productConfigurationRepository->findOneBy([]); + $configuration = $this->productConfigurationProvider->getProductConfiguration(); if (null !== $product->getId() && null !== $configuration && null !== $productTranslation->getSlug() &&