Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions src/Provider/ExcludedAttributesProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -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 [];
Expand Down
12 changes: 12 additions & 0 deletions src/Provider/ProductConfigurationProviderInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

declare(strict_types=1);

namespace Synolia\SyliusAkeneoPlugin\Provider;

use Synolia\SyliusAkeneoPlugin\Entity\ProductConfiguration;

interface ProductConfigurationProviderInterface
{
public function getProductConfiguration(): ?ProductConfiguration;
}
8 changes: 7 additions & 1 deletion src/Repository/ProductConfigurationRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,13 @@
namespace Synolia\SyliusAkeneoPlugin\Repository;

use Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository;
use Synolia\SyliusAkeneoPlugin\Entity\ProductConfiguration;
use Synolia\SyliusAkeneoPlugin\Provider\ProductConfigurationProviderInterface;

final class ProductConfigurationRepository extends EntityRepository
final class ProductConfigurationRepository extends EntityRepository implements ProductConfigurationProviderInterface
{
public function getProductConfiguration(): ?ProductConfiguration
{
return $this->findOneBy([]);
}
}
12 changes: 6 additions & 6 deletions src/Service/ProductChannelEnabler.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand All @@ -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;
}
Expand Down Expand Up @@ -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.');
Expand Down
5 changes: 3 additions & 2 deletions src/Task/Association/CreateProductAssociationTask.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -41,7 +42,7 @@ public function __construct(
ChannelRepository $channelRepository,
RepositoryInterface $channelPricingRepository,
RepositoryInterface $localeRepository,
RepositoryInterface $productConfigurationRepository,
ProductConfigurationProviderInterface $productConfigurationProvider,
ProductVariantFactoryInterface $productVariantFactory,
FactoryInterface $channelPricingFactory,
LoggerInterface $akeneoLogger
Expand All @@ -53,7 +54,7 @@ public function __construct(
$channelRepository,
$channelPricingRepository,
$localeRepository,
$productConfigurationRepository,
$productConfigurationProvider,
$productVariantFactory,
$channelPricingFactory,
$akeneoLogger
Expand Down
11 changes: 6 additions & 5 deletions src/Task/Product/AbstractCreateProductEntities.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand All @@ -62,7 +63,7 @@ public function __construct(
ChannelRepository $channelRepository,
RepositoryInterface $channelPricingRepository,
RepositoryInterface $localeRepository,
RepositoryInterface $productConfigurationRepository,
ProductConfigurationProviderInterface $productConfigurationProvider,
ProductVariantFactoryInterface $productVariantFactory,
FactoryInterface $channelPricingFactory,
LoggerInterface $akeneoLogger
Expand All @@ -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;
Expand Down Expand Up @@ -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.');
Expand Down
10 changes: 5 additions & 5 deletions src/Task/Product/AbstractInsertProductImageTask.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down
5 changes: 3 additions & 2 deletions src/Task/Product/CreateConfigurableProductEntitiesTask.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -96,7 +97,7 @@ public function __construct(
ChannelRepository $channelRepository,
RepositoryInterface $channelPricingRepository,
RepositoryInterface $localeRepository,
RepositoryInterface $productConfigurationRepository,
ProductConfigurationProviderInterface $productConfigurationProvider,
ProductGroupRepository $productGroupRepository,
ProductVariantFactoryInterface $productVariantFactory,
FactoryInterface $channelPricingFactory,
Expand All @@ -116,7 +117,7 @@ public function __construct(
$channelRepository,
$channelPricingRepository,
$localeRepository,
$productConfigurationRepository,
$productConfigurationProvider,
$productVariantFactory,
$channelPricingFactory,
$akeneoLogger
Expand Down
12 changes: 9 additions & 3 deletions src/Task/Product/CreateSimpleProductEntitiesTask.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -91,7 +93,7 @@ public function __construct(
RepositoryInterface $productVariantRepository,
RepositoryInterface $channelPricingRepository,
RepositoryInterface $localeRepository,
RepositoryInterface $productConfigurationRepository,
ProductConfigurationProviderInterface $productConfigurationProvider,
FactoryInterface $productFactory,
ProductVariantFactoryInterface $productVariantFactory,
FactoryInterface $channelPricingFactory,
Expand All @@ -113,7 +115,7 @@ public function __construct(
$channelRepository,
$channelPricingRepository,
$localeRepository,
$productConfigurationRepository,
$productConfigurationProvider,
$productVariantFactory,
$channelPricingFactory,
$akeneoLogger
Expand All @@ -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([]);
Expand Down
2 changes: 1 addition & 1 deletion src/Task/Product/InsertProductVariantImagesTask.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
18 changes: 12 additions & 6 deletions src/Task/ProductModel/AddOrUpdateProductModelTask.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -149,7 +151,7 @@ public function __construct(
AkeneoAttributeDataProviderInterface $akeneoAttributeDataProvider,
ProductFiltersRulesRepository $productFiltersRulesRepository,
RepositoryInterface $productTranslationRepository,
EntityRepository $productConfigurationRepository,
ProductConfigurationProviderInterface $productConfigurationProvider,
FactoryInterface $productTranslationFactory,
SlugGeneratorInterface $productSlugGenerator,
AkeneoFamilyPropertiesProvider $akeneoFamilyPropertiesProvider,
Expand All @@ -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;
Expand All @@ -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);

Expand Down Expand Up @@ -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() &&
Expand Down