Browse Source

UpdateProductFamilySectionPropertyEventSubscriber

packProduct
Guillaume 3 years ago
parent
commit
66168f06a7
2 changed files with 49 additions and 2 deletions
  1. +4
    -2
      Builder/Product/ProductFamilySectionPropertyBuilder.php
  2. +45
    -0
      EventSubscriber/Product/UpdateProductFamilySectionPropertyEventSubscriber.php

+ 4
- 2
Builder/Product/ProductFamilySectionPropertyBuilder.php View File

$this->productFamilySectionPropertyStore = $productFamilySectionPropertyStore; $this->productFamilySectionPropertyStore = $productFamilySectionPropertyStore;
} }


public function enable(ProductFamilyInterface $productFamily, SectionInterface $section): void
public function enable(ProductFamilyInterface $productFamily, SectionInterface $section, bool $flush = true): void
{ {
$productFamilySectionProperty = $this->productFamilySectionPropertyStore $productFamilySectionProperty = $this->productFamilySectionPropertyStore
->setSection($section) ->setSection($section)
$this->entityManager->create($productFamilySectionProperty); $this->entityManager->create($productFamilySectionProperty);
} }


$this->entityManager->flush();
if($flush) {
$this->entityManager->flush();
}
} }


} }

+ 45
- 0
EventSubscriber/Product/UpdateProductFamilySectionPropertyEventSubscriber.php View File

<?php

namespace Lc\CaracoleBundle\EventSubscriber\Product;

use Doctrine\ORM\EntityManagerInterface;

use Lc\CaracoleBundle\Model\Product\ProductFamilySectionPropertyInterface;
use Lc\SovBundle\Event\EntityManager\EntityManagerEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class UpdateProductFamilySectionPropertyEventSubscriber implements EventSubscriberInterface
{
protected EntityManagerInterface $entityManager;

public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}

public static function getSubscribedEvents()
{
return [
EntityManagerEvent::PRE_CREATE_EVENT => ['processBeforePersistProductFamilySectionInterface'],
EntityManagerEvent::PRE_UPDATE_EVENT => ['processBeforePersistProductFamilySectionInterface'],
];
}

public function processBeforePersistProductFamilySectionInterface(EntityManagerEvent $event)
{
$productFamilySectionProperty = $event->getEntity();

if($productFamilySectionProperty instanceof ProductFamilySectionPropertyInterface) {
if($productFamilySectionProperty->getStatus() == 1) {
$productCategoryArray = $productFamilySectionProperty->getProductFamily()->getProductCategories();
foreach($productCategoryArray as $productCategory) {
$productCategory->setStatus(1);
$this->entityManager->update($productCategory);
}
}
}

$this->entityManager->flush();
}

}

Loading…
Cancel
Save