Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
srv
/
data
/
web
/
vhosts
/
www.humitest.fr
/
htdocs
/
src
/
Controller
/
front
/
/srv/data/web/vhosts/www.humitest.fr/htdocs/src/Controller/front/ProductController.php
<?php namespace App\Controller\front; use App\Entity\Command; use App\Entity\Product; use App\Services\Mailer; use App\Form\ProductType; use App\Entity\Information; use App\Entity\ProductCard; use App\Services\MyService; use App\Entity\ProductSearch; use App\Form\InformationType; use App\Form\ProductCardType; use App\Entity\CommandProduct; use App\Form\ProductSearchType; use App\Form\SearchProductType; use App\Repository\CategoryDiscountRepository; use App\Services\StripeService; use App\Repository\UserRepository; use App\Repository\GammeRepository; use App\Services\GeneratePdfService; use Symfony\Component\Asset\Package; use App\Repository\ProductRepository; use App\Repository\CategoryRepository; use App\Repository\PromotionalRepository; use App\Repository\ConfigurationRepository; use Knp\Component\Pager\PaginatorInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\RouterInterface; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\RedirectResponse; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Asset\VersionStrategy\JsonManifestVersionStrategy; class ProductController extends AbstractController { /** * @Route("/panier", name="cart", methods="GET|POST") */ public function cart(ProductRepository $productRepository, Request $request, Session $session, ConfigurationRepository $configurationRepository): Response { $maxKillo = $configurationRepository->findOneByName('max_killo'); $myService = new MyService($productRepository, $session, $configurationRepository); $carts = []; // echo"<pre>"; // var_dump($session->get('carts')); // echo"</pre>"; if ($session->get("disabled-cart") == null || $session->get("disabled-cart") == "false") { if ($request->getMethod() == 'POST') { $qtt = $request->get('qtt'); $id = $request->get('id'); $carts = $session->get('carts'); $carts = $myService->setCart($carts, $id, $qtt); $session->set('carts', $carts); return $this->redirectToRoute('cart'); } } $products = $myService->getCart(); return $this->render('front/product/cart.html.twig', [ 'max_killo' => $maxKillo, 'products' => $products, 'slug' => 'cart', ]); } /** * @Route("/nos-produits", name="product_all", methods="GET") */ public function productAll(ProductRepository $productRepository, PaginatorInterface $paginator, Request $request, CategoryRepository $CategoryRepository, $data = null): Response { $form = $this->createForm(SearchProductType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); $products = $paginator->paginate( $productRepository->searchProducts($data), $request->query->getInt('page', 1), 28 ); } else if ($data !== null) { $products = $paginator->paginate( $productRepository->searchProducts($data), $request->query->getInt('page', 1), 28 ); } else { $products = $paginator->paginate( $productRepository->findBy(['isActive' => true], ['position' => 'ASC']), $request->query->getInt('page', 1), 28 ); } return $this->render('front/product/product_all.html.twig', [ 'products' => $products, 'categories' => $CategoryRepository->findAll(), 'slug' => 'product', "form" => $form->createView() ]); } /** * @Route("/nouveaux-produits", name="new_product", methods="GET") */ public function newProducts(ProductRepository $productRepository, PaginatorInterface $paginator, Request $request, CategoryRepository $CategoryRepository): Response { $products = $paginator->paginate( $productRepository->findBy(['isNewProduct' => 1], ['position' => 'ASC']), $request->query->getInt('page', 1), 12 ); return $this->render('front/product/newProduct.html.twig', [ 'newProducts' => $products, 'categories' => $CategoryRepository->findAll(), 'slug' => 'product', ]); } /** * @Route("/categorie/{id}/{name}", name="product_category", methods="GET") */ public function productDetail(ProductRepository $productRepository, PaginatorInterface $paginator, Request $request, int $id, CategoryRepository $categoryRepository): Response { $category = $categoryRepository->findOneById($id); $gammeShown = []; $products = $paginator->paginate( $productRepository->findBy(['category' => $id, 'isActive' => true], ['updatedAt' => 'ASC']), $request->query->getInt('page', 1), 100 ); // for ($i = 0; $i < $products; $i++) { // $gammeShown[$i] = false; // } return $this->render('front/product/product_category.html.twig', [ 'gammeShown' => $gammeShown, 'category' => $category, 'categories' => $categoryRepository->findAll(), // 'product' => $productRepository->findAll(), 'products' => $products, 'slug' => 'product', ]); } /** * @Route("/gamme/{name}/{id}", name="product_gamme", methods="GET") */ public function productByGamme(PaginatorInterface $paginator, Request $request, int $id, ProductRepository $productRepository, GammeRepository $gammeRepository, CategoryRepository $categoryRepository): Response { $gamme = $gammeRepository->findOneById($id); $gammeShown = []; if ($gamme->getName() == "Bâtiment") { $order = ["position" => "ASC", 'updatedAt' => 'ASC']; } else { $order = ['updatedAt' => 'ASC']; } $products = $paginator->paginate( $productRepository->findBy(['gammeProduct' => $id], $order), $request->query->getInt('page', 1), 100 ); $categoriesByGamme = $categoryRepository->findAllcategoriesByGamme($gamme); //dd($categoriesByGamme[0]->getName()); return $this->render('front/product/product_gamme.html.twig', [ 'gammeShown' => $gammeShown, 'gamme' => $gamme, 'categories' => $categoriesByGamme, 'product' => $productRepository->findAll(), 'products' => $products ]); } /** * @Route("/product-detail/{id}/{title}", name="product", methods="GET|POST") */ public function product(GammeRepository $gammeRepository, ProductRepository $productRepository, Product $product, int $id, Request $request, Session $session, ConfigurationRepository $configurationRepository): Response { $gamme = $gammeRepository->findOneById($id); $productCard = new ProductCard; $myService = new MyService($productRepository, $session, $configurationRepository); $form = $this->createForm(ProductCardType::class, $productCard); $form->handleRequest($request); $carts = []; if ($form->isSubmitted() && $form->isValid()) { if ($session->get("disabled-cart") == null || $session->get("disabled-cart") == "false") { $carts = $session->get('carts'); if (!empty($carts)) { foreach ($carts as $cart) { if ($cart['id'] == $id) { $this->addFlash('warning', 'Ce produit existe déjà dans le panier!'); } } } $qtt = $productCard->getQuantity(); $id = $product->getId(); $carts = $myService->setCart($carts, $id, $qtt); $session->set('carts', $carts); return $this->redirectToRoute('cart'); } } return $this->render('front/product/product.html.twig', [ 'form' => $form->createView(), 'product' => $product, 'products' => $productRepository->findBySimilar( [ 'category' => $product->getCategory(), ], $id, 3 ), 'slug' => 'product', 'gamme' => $gamme ]); } // $email_client = $this->getUser()->getEmail(); #reccuper l'email du user connecté // $contactUser = $contactRepository->findBy(['email' => $email_client], ['createdAt' => 'ASC']); // return $this->render('espace-client/contact/search.html.twig', [ // 'slug'=>'admin_contact', // 'contacts' => $contactUser // /** // * @Route("/coordonnees", name="product_information", methods="GET|POST") // * @IsGranted("ROLE_USER") // */ /** * @Route("/coordonnees", name="product_information", methods="GET|POST") */ public function information(UserRepository $userRepository, ProductRepository $productRepository, Request $request, Session $session, ConfigurationRepository $configurationRepository, PromotionalRepository $promotionalRepository, CategoryDiscountRepository $discountRepo): Response { $information = new Information; $data = $session->get('information'); $form = $this->createForm(InformationType::class, $information); if (!empty($data)) { $form->get('firstname')->setData($data['firstname']); $form->get('lastname')->setData($data['lastname']); $form->get('email')->setData($data['email']); $form->get('phone')->setData($data['phone']); $form->get('address')->setData($data['address']); $form->get('zipcode')->setData($data['zipcode']); $form->get('city')->setData($data['city']); $form->get('code')->setData($data['code']); } $form->handleRequest($request); $msg = 'Désolé. vous n\'avez pas accès à cette page'; $carts = $session->get('carts'); if (!empty($carts)) { if ($request->getMethod() == 'POST') { $total = $request->get('total'); // dd($request->get('total')); if (!empty($total)) { $cart_total = $session->get('cart_total'); $cart_total['total'] = $total; $session->set('cart_total', $cart_total); } } if ($form->isSubmitted() && $form->isValid()) { if ($information->getCompanyName2() != null) { $data['companyName'] = $information->getCompanyName2(); } else { $data['companyName'] = $information->getcompanyName(); } if ($information->getFirstname2() != null) { $data['firstname'] = $information->getFirstname2(); } else { $data['firstname'] = $information->getFirstname(); } if ($information->getLastname2() != null) { $data['lastname'] = $information->getLastname2(); } else { $data['lastname'] = $information->getLastname(); } if ($information->getEmail2() != null) { $data['email'] = $information->getEmail2(); } else { $data['email'] = $information->getEmail(); } if ($information->getPhone2() != null) { $data['phone'] = $information->getPhone2(); } else { $data['phone'] = $information->getPhone(); } if ($information->getCountry2() != null) { $data['country'] = $information->getCountry2(); } else { $data['country'] = $information->getCountry(); } if ($information->getAddress2() != null) { $data['address'] = $information->getAddress2(); } else { $data['address'] = $information->getAddress(); } if ($information->getCity2() != null) { $data['city'] = $information->getCity2(); } else { $data['city'] = $information->getCity(); } if ($information->getZipcode2() != null) { $data['zipcode'] = $information->getZipcode2(); } else { $data['zipcode'] = $information->getZipcode(); } $data['noteCommande'] = $information->getNoteCommande(); $data['code'] = $information->getCode(); $data['solde'] = null; $data['discount'] = null; if (!empty($information->getCode())) { $promotional = $promotionalRepository->findOneByCode($information->getCode()); if ($promotional != null) { $data['solde'] = $promotional->getSolde(); } $discount = $discountRepo->findOneBy(['codeUnlockDiscount' => $information->getCode()]); if ($discount != null) { $data['discount'] = $discount; } } $session->set('information', $data); return $this->redirectToRoute('product_payment'); } } else { $this->addFlash('danger', $msg); return $this->redirectToRoute('cart'); } $myService = new MyService($productRepository, $session, $configurationRepository); $products = $myService->getCart(); return $this->render('front/product/information.html.twig', [ 'products' => $products, 'slug' => 'cart', 'form' => $form->createView(), ]); } /** * @Route("/panier/delete/{id}", name="product_delete", methods="GET|POST") */ public function delete(int $id, Session $session): Response { $msg = 'Produit enlevé du panier avec succès'; $carts = $session->get('carts'); foreach ($carts as $key => $cart) { if ($cart['id'] == $id) { unset($carts[$key]); break; } } $session->set('carts', $carts); $this->addFlash('success', $msg); return $this->redirectToRoute('cart'); } /** * @Route("/delete-cache") */ public function deleteCacheSession(Session $session) { $session->clear(); dd($session->get('carts')); } public function navbarSearchBar(Request $request): Response { $form = $this->createForm(SearchProductType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); return $this->redirectToRoute("product_all", ["data" => $data]); } return $this->render("front/blocks/navbar-search.html.twig", [ "form" => $form->createView() ]); } /** * @Route("/testeur-humidite") */ public function adwordsTesteurHumidite(ProductRepository $productRepository, PaginatorInterface $paginator, Request $request, CategoryRepository $CategoryRepository): Response { $products = $paginator->paginate( $productRepository->findBy(['isActive' => true], ['gammeProduct' => 'ASC']), $request->query->getInt('page', 1), 28 ); return $this->render('front/product/adwords-testeur-humidite.html.twig', [ 'products' => $products, 'categories' => $CategoryRepository->findAll(), 'slug' => 'product', ]); } }