|
- <?php
-
- namespace Lc\CaracoleBundle\Builder\Product;
-
- use Doctrine\ORM\EntityManagerInterface;
- use Lc\CaracoleBundle\Container\Section\SectionContainer;
- use Lc\CaracoleBundle\Model\Merchant\MerchantInterface;
- use Lc\CaracoleBundle\Model\Product\ProductFamilyInterface;
-
- class ProductFamilyBuilder
- {
- protected EntityManagerInterface $entityManager;
- protected SectionContainer $sectionContainer;
-
- public function __construct(
- EntityManagerInterface $entityManager,
- SectionContainer $sectionContainer
- )
- {
- $this->entityManager = $entityManager;
- $this->sectionContainer = $sectionContainer;
- }
-
- public function setMerchant(ProductFamilyInterface $productFamily, MerchantInterface $merchant): void
- {
- $sectionStore = $this->sectionContainer->getStore()->setMerchant($merchant);
-
- // Les ProductFamilySectionProperty sont créées en double, on rectifie ici
- $productFamilySectionPropertyArray = [];
- foreach($productFamily->getProductFamilySectionProperties() as $productFamilySectionProperty) {
- $productFamilySectionPropertyArray[$productFamilySectionProperty->getId()] = $productFamilySectionProperty;
- $productFamily->removeProductFamilySectionProperty($productFamilySectionProperty);
- }
-
- foreach($productFamilySectionPropertyArray as $productFamilySectionProperty) {
- $oldSection = $productFamilySectionProperty->getSection();
- $newSection = $sectionStore->getOneByDevAlias($oldSection->getDevAlias());
-
- if($newSection) {
- $productFamilySectionProperty->setProductFamily($productFamily);
- $productFamilySectionProperty->setSection($newSection);
- $productFamily->addProductFamilySectionProperty($productFamilySectionProperty);
- }
- else {
- $this->entityManager->remove($productFamilySectionProperty);
- $productFamily->removeProductFamilySectionProperty($productFamilySectionProperty);
- }
- }
-
- $productFamily->initProductCategories();
- }
- }
|