src/Flexy/ShopBundle/EventSubscriber/EasyAdminSubscriber.php line 250
<?php# src/EventSubscriber/EasyAdminSubscriber.phpnamespace App\Flexy\ShopBundle\EventSubscriber;use App\Entity\BlogPost;use App\Flexy\ShopBundle\Entity\Brand;use App\Flexy\ShopBundle\Entity\Order\DemandeFund;use App\Flexy\ShopBundle\Entity\Order\Order;use App\Flexy\ShopBundle\Entity\Product\CategoryProduct;use App\Flexy\ShopBundle\Entity\Product\ImportExcel;use App\Flexy\ShopBundle\Entity\Product\Product;use App\Flexy\ShopBundle\Entity\Product\ProductShop;use App\Flexy\ShopBundle\Entity\Resource\Agent;use App\Flexy\ShopBundle\Entity\Store\Store;use App\Flexy\ShopBundle\Entity\Vendor\Vendor;use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;use Symfony\Component\Security\Core\Security;use Doctrine\ORM\EntityManagerInterface;use EasyCorp\Bundle\EasyAdminBundle\Event\AfterCrudActionEvent;use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\Reader\Csv;use PhpOffice\PhpSpreadsheet\Reader\Xlsx;class EasyAdminSubscriber implements EventSubscriberInterface{public function __construct(private readonly Security $security, private readonly UserPasswordHasherInterface $passwordEncoder, private readonly EntityManagerInterface $em){}public static function getSubscribedEvents(){return [BeforeEntityPersistedEvent::class => ['beforePersist'],BeforeEntityUpdatedEvent::class => ['beforeUpdated'],AfterCrudActionEvent::class => ['afterAction']];}public function afterAction(AfterCrudActionEvent $event){if($event->getResponseParameters()->get("pageName") == "detail"){$entity = $event->getResponseParameters()->get("entity")->getInstance();if ($entity instanceof Order) {$entity->setIsChecked(true);$this->em->persist($entity);$this->em->flush();}}}public function beforePersist(BeforeEntityPersistedEvent $event){$entity = $event->getEntityInstance();if ($entity instanceof ImportExcel) {$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();$spreadsheet = $reader->load("uploads/".$entity->getFile());$spreadsheetToArray = $spreadsheet->getActiveSheet()->toArray();$headers=$spreadsheetToArray[0];$dataFiltred=[];$allData=[];foreach($spreadsheetToArray as $singleRow){if($headers == $singleRow){continue;}foreach($headers as $key=>$value){if($value===null or $value===""){continue;}$dataFiltred[str_replace(" ","",(string) $value)]=$singleRow[$key];}$allData[]= $dataFiltred;}dd($allData);$vendor = $this->em->getRepository(Vendor::class)->findOneBy(["user"=>$this->security->getUser()]);if($vendor){$counterImported=0;$counterIgnored = 0;foreach($allData as $singleData){$product = new Product();//BySamir : ToModify$product->setName((string)$singleData["NOM_PRODUIT"]);$product->setSkuCode((string)$singleData["CODE_EAN"]);$product->setName((string)$singleData["NOM_PRODUIT"]);$cat1 = $this->em->getRepository(CategoryProduct::class)->findOneBy(["name"=>$singleData["CAT1"]]);$cat2 = $this->em->getRepository(CategoryProduct::class)->findOneBy(["name"=>$singleData["CAT2"]]);$cat3 = $this->em->getRepository(CategoryProduct::class)->findOneBy(["name"=>$singleData["CAT3"]]);$cat4 = $this->em->getRepository(CategoryProduct::class)->findOneBy(["name"=>$singleData["CAT4"]]);$cat5 = $this->em->getRepository(CategoryProduct::class)->findOneBy(["name"=>$singleData["CAT5"]]);$brand = $this->em->getRepository(Brand::class)->findOneBy(["name"=>$singleData["MARQUE"]]);if($cat1){$product->addCategoryProduct($cat1);}if($cat2){$product->addCategoryProduct($cat2);}if($cat3){$product->addCategoryProduct($cat3);}if($cat4){$product->addCategoryProduct($cat4);}if($cat5){$product->addCategoryProduct($cat5);}if($brand){$product->setBrand($brand);}else{$brand = new Brand();$brand->setName((string)$singleData["MARQUE"]);$product->setBrand($brand);}$product->setPrice((float)$singleData["PRIX_VENTE"] * 100 );$product->setOldPrice((float)$singleData["ANCIEN_PRIX"] * 100 );$product->setQuantity((int)$singleData["STOCK"]);if($singleData["IMAGE"]){$newImagePath = static::slugify($singleData["NOM_PRODUIT"]);copy($singleData["IMAGE"], "uploads/".$newImagePath);$product->setImage($newImagePath);}$product->setShortDescription((string)$singleData["DESCRIPTION_COURTE"]);$product->setDescription((string)$singleData["DESCRIPTION_COMPLETE"]);$product->setVendor($vendor);$this->em->persist($product);$counterImported = $counterImported + 1;}$entity->setTotalLinesImported($counterImported);$entity->setTotalLinesIgnored($counterIgnored);}}if ($entity instanceof DemandeFund) {foreach($entity->getOrders() as $singleOrder){$singleOrder->setDemandeFund($entity);$entity->addOrder($singleOrder);}}if ($entity instanceof Vendor) {$entity->setSimulateUsername("");$entity->getUser()->setRoles(["ROLE_VENDOR"]);$entity->getUser()->setPassword($this->passwordEncoder->hashPassword($entity->getUser(),$entity->getUser()->getPassword()));//dd($entity);}if ($entity instanceof Store) {$entity->getUser()->setRoles(["ROLE_STORE"]);$entity->getUser()->setPassword($this->passwordEncoder->hashPassword($entity->getUser(),$entity->getUser()->getPassword()));}if ($entity instanceof Agent) {if($entity->getUser()->getUserIdentifier() == null or $entity->getUser()->getPassword() == null){$entity->getUser()->setUsername(static::slugify($entity->getFirstName().$entity->getLastName().$entity->getPhone()));$entity->getUser()->setPassword(static::slugify($entity->getFirstName().$entity->getLastName().$entity->getPhone()));}$entity->getUser()->setRoles(["ROLE_AGENT"]);$entity->getUser()->setPassword($this->passwordEncoder->hashPassword($entity->getUser(),$entity->getUser()->getPassword()));}if ($entity instanceof Product ) {$entity->setSkuCodeShop("OM".$entity->getCreatedAt()->format("ymdhs").$entity->getId());$vendor = $this->em->getRepository(Vendor::class)->findOneBy(["user"=>$this->security->getUser()]);$entity->setVendor($vendor);}}public function beforeUpdated(BeforeEntityUpdatedEvent $event){$entity = $event->getEntityInstance();if ($entity instanceof Product) {$imagePath = $entity->getImage();$entity->setImage($imagePath);}if ($entity instanceof DemandeFund) {foreach($entity->getOrders() as $singleOrder){$singleOrder->setDemandeFund($entity);$entity->addOrder($singleOrder);}}if ($entity instanceof Vendor) {//dd($entity->getUser()->getPassword());/*$entity->getUser()->setRoles(["ROLE_VENDOR"]);$entity->getUser()->setPassword($this->passwordEncoder->encodePassword($entity->getUser(),$entity->getUser()->getPassword()));*/}if ($entity instanceof Product ) {$entity->setSkuCodeShop($entity->getSkuCodeShop().$entity->getId());$vendor = $this->em->getRepository(Vendor::class)->findOneBy(["user"=>$this->security->getUser()]);}}public static function slugify($text, string $divider = '-'){// replace non letter or digits by divider$text = preg_replace('~[^\pL\d]+~u', $divider, (string) $text);// transliterate$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);// remove unwanted characters$text = preg_replace('~[^\-\w]+~', '', $text);// trim$text = trim($text, $divider);// remove duplicate divider$text = preg_replace('~-+~', $divider, $text);// lowercase$text = strtolower($text);if (empty($text)) {return 'n-a';}return $text;}}