src/Controller/FrontendController.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Filtre;
  4. use App\Entity\Utilisateur;
  5. use App\Form\FiltreType;
  6. use App\Repository\ConfigurationRepository;
  7. use App\Repository\DocumentationRepository;
  8. use App\Repository\MarqueRepository;
  9. use App\Repository\ProduitRepository;
  10. use App\Repository\UrlRepository;
  11. use App\Repository\VendeurRepository;
  12. use App\Service\CrawlService;
  13. use PhpParser\Node\Expr\Array_;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\HttpFoundation\Request;
  18. class FrontendController extends AbstractController
  19. {
  20.     #[Route('/'name'homepage')]
  21.     public function index(?Utilisateur $utilisateurUrlRepository $urlRepository): Response
  22.     {
  23.             $derniereUrl $urlRepository->findBy([],["dateTimeMaj"=>"DESC"],['limit'=>1]);
  24.             return $this->render('frontend/camouflage.html.twig', [
  25.                 'derniereUrl' => $derniereUrl[0]->getDateTimeMaj()
  26.             ]);
  27.     }
  28.     #[Route('/documentation'name'app_documentation')]
  29.     public function documentation(DocumentationRepository $documentationRepository): Response
  30.     {
  31.         return $this->render('frontend/documentation.html.twig', [
  32.             'documentation' => $documentationRepository->findAll(),
  33.         ]);
  34.     }
  35.     #[Route('/dashboard'name'app_dashboard'methods: ['GET''POST'])]
  36.     public function dashboard(Request $request,
  37.                               ProduitRepository $produitRepository,
  38.                               UrlRepository $urlRepository,
  39.                               VendeurRepository $vendeurRepository,
  40.                               ConfigurationRepository $configurationRepository,
  41.                               ): Response
  42.     {
  43.         //tableau pour le stockage des résultats [nomProduit] = Array(urlEntity1, urlEntity2...)
  44.         $resultat = Array();
  45.         $correspondanceProduitId = Array();
  46.         $prixReferents = Array();
  47.         $tousLesVendeurs $vendeurRepository->findAll();
  48.         //récupère tous les produits
  49.         //$produits = $produitRepository->findAll();
  50.         $produits $produitRepository->getProduits();
  51.         $vendeurReferentPrimaire $configurationRepository->findOneBy(["parametre" => "vendeurReferentPrimaire"])->getValeur();
  52.         $vendeurReferentSecondaire $configurationRepository->findOneBy(["parametre" => "vendeurReferentSecondaire"])->getValeur();
  53.         $dashboardUrlsRapide $configurationRepository->findOneBy(["parametre" => "dashboardUrlsRapide"])->getValeur();
  54.         //filtre de recherche pour le dashboard
  55.         //création du formulaire
  56.         $filtre = new Filtre();
  57.         $form $this->createForm(FiltreType::class, $filtre);
  58.         $form->handleRequest($request);
  59.         if ($form->isSubmitted() && $form->isValid()) {
  60.             /*
  61.             /Si une ou plusieurs marques ont été choisi, on prend le tableau des valeur du formulaire et on lance
  62.             /une nouvelle récupération des produits qui respectent  la ou les marques choisi
  63.             */
  64.             if(isset($_POST['filtre']['marque'])){
  65.                 $produits $produitRepository->findBy(
  66.                     ['marque' => $_POST['filtre']['marque']]
  67.                 );
  68.             }
  69.             /*
  70.             /Si une ou plusieurs produits ont été choisi, on prend le tableau des valeurs du formulaire et on lance
  71.             /une nouvelle récupération des produits qui respectent  la ou les produits choisi
  72.             */
  73.             if(isset($_POST['filtre']['produit'] )){
  74.                 $produits $produitRepository->findBy(
  75.                     ['id' => $_POST['filtre']['produit']]
  76.                 );
  77.             }
  78.         }
  79.         //findUrlsByIdProduitAndVendeur
  80.         //Mise en variable des résultats [nomProduit] = Array(urlEntity1, urlEntity2...)
  81.         foreach ($produits as $produit) {
  82.             $resultat[$produit->getNom()] = $urlRepository->findUrlsByIdProduit($produit->getId());
  83.             $correspondanceProduitId[$produit->getNom()] = $produit->getId();
  84.             if ($form->isSubmitted() && $form->isValid()) {
  85.                 if(isset($_POST['filtre']['vendeur'])){
  86.                     $resultat[$produit->getNom()] = $urlRepository->findUrlsByIdProduitAndVendeur($produit->getId(),$_POST['filtre']['vendeur']);
  87.                 }
  88.             }
  89.             foreach ($urlRepository->findUrlsByIdProduit($produit->getId()) as $url){
  90.                 if($url->getVendeur() == $vendeurReferentPrimaire || $url->getVendeur() == $vendeurReferentSecondaire){
  91.                     $prixReferents[$produit->getNom()] = $url->getPrix();
  92.                 }
  93.             }
  94.         }
  95.         return $this->render('frontend/index.html.twig', [
  96.             'produits' => $resultat,
  97.             'correspondanceProduitId' => $correspondanceProduitId,
  98.             'prixReferents' => $prixReferents,
  99.             'tousLesVendeurs' => $tousLesVendeurs,
  100.             'dashboardUrlsRapide'=>$dashboardUrlsRapide,
  101.             'form' => $form->createView(),
  102.         ]);
  103.     }
  104. }