Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
proc
/
212
/
root
/
proc
/
self
/
root
/
proc
/
212
/
root
/
proc
/
70528
/
cwd
/
src
/
Controller
/
back
/
//proc/212/root/proc/self/root/proc/212/root/proc/70528/cwd/src/Controller/back/CsvController.php
<?php namespace App\Controller\back; use App\Entity\Fold; use App\Entity\Page; use App\Entity\Size; use App\Entity\Color; use App\Entity\Price; use App\Entity\DbModel; use App\Entity\Product; use App\Entity\Grammage; use App\Entity\Quantity; use App\Entity\Finishing; use App\Form\DbModelType; use App\Form\DbModelSelectionType; use App\Repository\ProductRepository; use Doctrine\Persistence\ManagerRegistry; use PhpOffice\PhpSpreadsheet\Reader\Xlsx; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; /** * @Route("/admin") */ class CsvController extends AbstractController { /** * @Route("/csv", name="back_db_import") */ public function import( Request $request, ManagerRegistry $doctrine, ProductRepository $productRepository ) { $form = $this->createForm(DbModelSelectionType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $doctrine->getManager(); $data = $form->getData(); if ($data["replace"]) { $products = $productRepository->findAll(); foreach ($products as $product) { $product->setActive(false); $em->persist($product); } $em->flush(); } $filename = $data["model"]->getFileName(); $file = "uploads/db/$filename"; $reader = new Xlsx(); $spreadSheet = $reader->load($file); $sheet = $spreadSheet->getActiveSheet(); $i = 1; $values = []; $rows = $sheet->getRowIterator(); $cols = $sheet->getColumnIterator(); foreach ($cols as $col) { $key = $sheet->getCellByColumnAndRow($i, 1); $j = 2; foreach ($rows as $row) { $value = $sheet->getCellByColumnAndRow($i, $j); if ($key == "produit") { $values[$key->getValue()][$j] = ucfirst(strtolower($value->getValue())); } $values[$key->getValue()][$j] = $value->getValue(); $j++; } $i++; } $inserted = []; // case insensitive array_unique $products = array_intersect_key( $values["produit"], array_unique(array_map("strtolower", $values["produit"])) ); foreach ($products as $productName) { if ($productName != null) { $inserted[$productName] = [ "couleur" => [ "name" => [], "entity" => [] ], "pliage" => [ "name" => [], "entity" => [] ], "finition" => [ "name" => [], "entity" => [] ], "format" => [ "name" => [], "entity" => [] ], "pages" => [ "name" => [], "entity" => [] ], "grammage" => [ "name" => [], "entity" => [] ], "quantité" => [ "name" => [], "entity" => [] ] ]; $product = new Product(); $product->setName($productName); $product->setDescription($productName); $setDelivery = false; for ($i = 2; $i < count($values["produit"]) + 1; $i++) { $price = []; if ($values["produit"][$i] == $productName) { if (!$setDelivery) { $product->setAvailableForDelivery((bool) $values["livraison"][$i]); $setDelivery = true; } if (!in_array($values["couleur"][$i], $inserted[$productName]["couleur"]["name"])) { $color = new Color(); $color->setActive(1); $color->setName($values["couleur"][$i]); $product->addColor($color); $em->persist($color); $price["couleur"] = $color; array_push($inserted[$productName]["couleur"]["name"], $values["couleur"][$i]); array_push($inserted[$productName]["couleur"]["entity"], $color); } else { $price["couleur"] = $inserted[$productName]["couleur"]["entity"][array_search($values["couleur"][$i], $inserted[$productName]["couleur"]["name"])]; } if (!in_array($values["pliage"][$i], $inserted[$productName]["pliage"]["name"])) { $fold = new Fold(); $fold->setActive(1); $fold->setName($values["pliage"][$i]); $product->addFold($fold); $em->persist($fold); $price["pliage"] = $fold; array_push($inserted[$productName]["pliage"]["name"], $values["pliage"][$i]); array_push($inserted[$productName]["pliage"]["entity"], $fold); } else { $price["pliage"] = $inserted[$productName]["pliage"]["entity"][array_search($values["pliage"][$i], $inserted[$productName]["pliage"]["name"])]; } if (!in_array($values["finition"][$i], $inserted[$productName]["finition"]["name"])) { $finishing = new Finishing(); $finishing->setActive(1); $finishing->setName($values["finition"][$i]); $product->addFinishing($finishing); $em->persist($finishing); $price["finition"] = $finishing; array_push($inserted[$productName]["finition"]["name"], $values["finition"][$i]); array_push($inserted[$productName]["finition"]["entity"], $finishing); } else { $price["finition"] = $inserted[$productName]["finition"]["entity"][array_search($values["finition"][$i], $inserted[$productName]["finition"]["name"])]; } if (!in_array($values["pages"][$i], $inserted[$productName]["pages"]["name"])) { $page = new Page(); $page->setActive(1); $page->setName($values["pages"][$i]); $product->addPage($page); $em->persist($page); $price["pages"] = $page; array_push($inserted[$productName]["pages"]["name"], $values["pages"][$i]); array_push($inserted[$productName]["pages"]["entity"], $page); } else { $price["pages"] = $inserted[$productName]["pages"]["entity"][array_search($values["pages"][$i], $inserted[$productName]["pages"]["name"])]; } if (!in_array($values["quantité"][$i], $inserted[$productName]["quantité"]["name"])) { $quantity = new Quantity(); $quantity->setActive(1); $quantity->setQuantity((string) $values["quantité"][$i]); $product->addQuantity($quantity); $em->persist($quantity); $price["quantité"] = $quantity; array_push($inserted[$productName]["quantité"]["name"], $values["quantité"][$i]); array_push($inserted[$productName]["quantité"]["entity"], $quantity); } else { $price["quantité"] = $inserted[$productName]["quantité"]["entity"][array_search($values["quantité"][$i], $inserted[$productName]["quantité"]["name"])]; } if (!in_array($values["grammage"][$i], $inserted[$productName]["grammage"]["name"])) { $grammage = new Grammage(); $grammage->setActive(1); $grammage->setName($values["grammage"][$i]); $grammage->setPrice(0); $product->addGrammage($grammage); $em->persist($grammage); $price["grammage"] = $grammage; array_push($inserted[$productName]["grammage"]["name"], $values["grammage"][$i]); array_push($inserted[$productName]["grammage"]["entity"], $grammage); } else { $price["grammage"] = $inserted[$productName]["grammage"]["entity"][array_search($values["grammage"][$i], $inserted[$productName]["grammage"]["name"])]; } if (!in_array($values["format"][$i], $inserted[$productName]["format"]["name"])) { $size = new Size(); $size->setActive(1); $size->setName($values["format"][$i]); $product->addSize($size); $em->persist($size); $price["format"] = $size; array_push($inserted[$productName]["format"]["name"], $values["format"][$i]); array_push($inserted[$productName]["format"]["entity"], $size); } else { $price["format"] = $inserted[$productName]["format"]["entity"][array_search($values["format"][$i], $inserted[$productName]["format"]["name"])]; } $priceEntity = new Price(); $priceEntity->setColor($price["couleur"]); $priceEntity->setFinishing($price["finition"]); $priceEntity->setFold($price["pliage"]); $priceEntity->setPage($price["pages"]); $priceEntity->setQuantity($price["quantité"]); $priceEntity->setSize($price["format"]); $priceEntity->setGrammage($price["grammage"]); $priceEntity->setProduct($product); $priceEntity->setPrice($values["prix ht"][$i]); $product->addPrice($priceEntity); $em->persist($priceEntity); } } $em->persist($product); } } $em->flush(); } return $this->render("back/csv/select.html.twig", [ "form" => $form->createView() ]); } /** * @Route("/csv/download", name="back_db_download") */ public function download(Request $request, ManagerRegistry $doctrine) { $model = new DbModel(); $form = $this->createForm(DbModelType::class, $model); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $doctrine->getManager(); $em->persist($model); $em->flush(); $this->addFlash("success", "Fichier téléchargé. Vous pouvez désormais l'utiliser."); return $this->redirectToRoute("back_db_import"); } return $this->render("back/csv/download.html.twig", [ "form" => $form->createView() ]); } }