Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
proc
/
212
/
task
/
212
/
root
/
proc
/
212
/
root
/
proc
/
70528
/
cwd
/
src
/
Controller
/
back
/
//proc/212/task/212/root/proc/212/root/proc/70528/cwd/src/Controller/back/GrammageController.php
<?php namespace App\Controller\back; use App\Entity\Grammage; use App\Form\GrammageType; use App\Repository\ProductRepository; use App\Repository\GrammageRepository; use Doctrine\Persistence\ManagerRegistry; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; /** * @Route("/admin") */ class GrammageController extends AbstractController { /** * @Route("/grammage", name="back_grammage_list") */ public function listGrammages(GrammageRepository $grammageRepository): Response { $grammages = $grammageRepository->findBy(["active" => 1]); return $this->render('back/grammage/list.html.twig', [ "grammages" => $grammages ]); } /** * @Route("/grammage/archived", name="back_grammage_archived") */ public function archivedGrammages(GrammageRepository $grammageRepository): Response { $grammages = $grammageRepository->findBy(["active" => 0]); return $this->render('back/grammage/archived.html.twig', [ "grammages" => $grammages ]); } /** * @Route("/grammage/create", name="back_grammage_create") */ public function createGrammage(Request $request, ManagerRegistry $doctrine) { $grammage = new Grammage(); $form = $this->createForm(GrammageType::class, $grammage); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $doctrine->getManager(); $em->persist($grammage); $em->flush(); $this->addFlash("success", "Grammage ajouté"); return $this->redirectToRoute("back_grammage_list"); } return $this->render("back/grammage/create.html.twig", [ "form" => $form->createView() ]); } /** * @Route("/grammage/{id}/archive", name="back_grammage_archive") */ public function archiveGrammage($id, GrammageRepository $grammageRepository, ManagerRegistry $doctrine) { $em = $doctrine->getManager(); $grammage = $grammageRepository->find($id); $grammage->setActive(false); $em->persist($grammage); $em->flush(); $this->addFlash("warning", "Grammage archivé"); return $this->redirectToRoute("back_grammage_list"); } /** * @Route("/grammage/{id}/unarchive", name="back_grammage_unarchive") */ public function unarchiveGrammage($id, GrammageRepository $grammageRepository, ManagerRegistry $doctrine) { $em = $doctrine->getManager(); $grammage = $grammageRepository->find($id); $grammage->setActive(true); $em->persist($grammage); $em->flush(); $this->addFlash("warning", "Grammage désarchivé"); return $this->redirectToRoute("back_grammage_archived"); } /** * @Route("/product/{id}/grammage/add/{grammageId}", name="back_product_grammage_add") */ public function addProductGrammage($id, $grammageId, ProductRepository $productRepository, GrammageRepository $grammageRepository, ManagerRegistry $doctrine) { $product = $productRepository->find($id); $grammage = $grammageRepository->find($grammageId); $product->addGrammage($grammage); $em = $doctrine->getManager(); $em->persist($product); $em->flush(); return $this->json($grammage->getName()); } /** * @Route("/product/{id}/grammage/{grammageId}/delete", name="back_product_grammage_delete") */ public function removeProductGrammage($id, $grammageId, ProductRepository $productRepository, ManagerRegistry $doctrine, GrammageRepository $grammageRepository) { $product = $productRepository->find($id); $grammage = $grammageRepository->find($grammageId); try { $em = $doctrine->getManager(); $product->removeGrammage($grammage); $em->persist($product); $em->flush(); } catch (ForeignKeyConstraintViolationException $e) { $doctrine->resetManager(); $grammage = $grammageRepository->find($grammageId); $em = $doctrine->getManager(); $grammage->setActive(false); $em->persist($grammage); $em->flush(); return $this->json("Impossible de supprimer le grammage car il est utilisé dans une commande. Elle à été archivée, et ne sera visible que sur les anciennes commandes."); } return $this->json("success"); } /** * @Route("/grammage/{id}/edit", name="back_grammage_edit") */ public function editGrammage($id, GrammageRepository $grammageRepository, Request $request, ManagerRegistry $doctrine) { $grammage = $grammageRepository->find($id); $form = $this->createForm(GrammageType::class, $grammage); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $doctrine->getManager(); $em->persist($grammage); $em->flush(); $this->addFlash("success", "Grammage modifié !"); return $this->redirectToRoute("back_grammage_list"); } return $this->render("back/grammage/edit.html.twig", [ "form" => $form->createView(), "grammage" => $grammage ]); } }