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
/
front
/
//proc/212/task/212/root/proc/212/root/proc/70528/cwd/src/Controller/front/ProductController.php
<?php namespace App\Controller\front; use App\Repository\CartRepository; use App\Repository\FoldRepository; use App\Repository\PageRepository; use App\Repository\SizeRepository; use App\Repository\ColorRepository; use App\Repository\PriceRepository; use App\Repository\ProductRepository; use App\Repository\CategoryRepository; use App\Repository\GrammageRepository; use App\Repository\QuantityRepository; use App\Repository\FinishingRepository; use Knp\Component\Pager\PaginatorInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; class ProductController extends AbstractController { const TVA_RATE = 0.20; /** * @Route("/produits", name="app_product_list") */ public function index(PaginatorInterface $paginatorInterface, ProductRepository $productRepository, Request $request): Response { $products = $paginatorInterface->paginate( $productRepository->findProducts(), $request->query->getInt("page", 1), 12 ); return $this->render("front/product/list.html.twig", [ "products" => $products, "title" => "Tous les produits" ]); } /** * @Route("/produits/rechercher/{query}", name="app_product_search") */ public function searchProducts(ProductRepository $productRepository, $query, PaginatorInterface $paginatorInterface, Request $request) { $products = $paginatorInterface->paginate( $productRepository->findQuery($query), $request->query->getInt("page", 1), 12 ); return $this->render("front/product/list.html.twig", [ "products" => $products, "title" => "Produits correspondant à la recherche '" . $query . "'" ]); } /** * @Route("/produit/{id}", name="app_product_read") */ public function readProduct($id, ProductRepository $productRepository, PriceRepository $priceRepository) { $product = $productRepository->find($id); $lowestPrice = $priceRepository->findOneBy(["product" => $product], ["price" => "ASC"]); return $this->render("front/product/read.html.twig", [ "product" => $product, "lowestPrice" => $lowestPrice ]); } /** * @Route("/produits/categorie/{id}", name="app_product_category") */ public function categoryProducts($id, ProductRepository $productRepository, PaginatorInterface $paginator, Request $request, CategoryRepository $categoryRepository) { $category = $categoryRepository->find($id); $order = ($request->query->get("order")) ? $request->query->get("order") : "ASC"; $products = $paginator->paginate( $productRepository->findFromCategory($id, $order), $request->query->getInt("page", 1), 12 ); return $this->render("front/category/products.html.twig", [ "products" => $products, "category" => $category ]); } /** * @Route("/produit/{id}/price", name="app_product_price") */ public function getProductPrice( $id, PriceRepository $priceRepository, Request $request, QuantityRepository $quantityRepository, PageRepository $pageRepository, ColorRepository $colorRepository, SizeRepository $sizeRepository, FoldRepository $foldRepository, GrammageRepository $grammageRepository, FinishingRepository $finishingRepository, ProductRepository $productRepository, Session $session, CartRepository $cartRepository ) { $product = $productRepository->find($id); $quantity = $quantityRepository->find((int) $request->get("quantity")); $page = $pageRepository->find((int) $request->get("pages")); $color = $colorRepository->find((int) $request->get("color")); $size = $sizeRepository->find((int) $request->get("size")); $fold = $foldRepository->find((int) $request->get("fold")); $grammage = $grammageRepository->find((int) $request->get("grammage")); $finishing = $finishingRepository->find((int) $request->get("finishing")); $filters = []; if ($product) $filters["product"] = $product; if ($quantity) $filters["quantity"] = $quantity; if ($page) $filters["page"] = $page; if ($color) $filters["color"] = $color; if ($fold) $filters["fold"] = $fold; if ($finishing) $filters["finishing"] = $finishing; if ($grammage) $filters["grammage"] = $grammage; if ($size) $filters["size"] = $size; $filters["active"] = true; $price = $priceRepository->findOneBy($filters); if (!$price) { return $this->json([ "quantity: " . $quantity->getId(), "page: " . $page->getId(), "color: " . $color->getId(), "fold: " . $fold->getId(), "grammage: " . $grammage->getId(), "size: " . $size->getId() ]); } $cart = $cartRepository->findOneBy(["sessionToken" => $session->getId()]); return $this->json([ "price" => $price->getPrice(), "tva" => self::TVA_RATE * $price->getPrice(), "cartTotal" => $cart->getPrice() + $price->getPrice() ]); } }