src/Controller/FrontendController.php line 24
- <?php
- namespace App\Controller;
- use App\Entity\Filtre;
- use App\Entity\Utilisateur;
- use App\Form\FiltreType;
- use App\Repository\ConfigurationRepository;
- use App\Repository\DocumentationRepository;
- use App\Repository\MarqueRepository;
- use App\Repository\ProduitRepository;
- use App\Repository\UrlRepository;
- use App\Repository\VendeurRepository;
- use App\Service\CrawlService;
- use PhpParser\Node\Expr\Array_;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Annotation\Route;
- use Symfony\Component\HttpFoundation\Request;
- class FrontendController extends AbstractController
- {
- #[Route('/', name: 'homepage')]
- public function index(?Utilisateur $utilisateur, UrlRepository $urlRepository): Response
- {
- $derniereUrl = $urlRepository->findBy([],["dateTimeMaj"=>"DESC"],['limit'=>1]);
- return $this->render('frontend/camouflage.html.twig', [
- 'derniereUrl' => $derniereUrl[0]->getDateTimeMaj()
- ]);
- }
- #[Route('/documentation', name: 'app_documentation')]
- public function documentation(DocumentationRepository $documentationRepository): Response
- {
- return $this->render('frontend/documentation.html.twig', [
- 'documentation' => $documentationRepository->findAll(),
- ]);
- }
- #[Route('/dashboard/{mode?}', name: 'app_dashboard', defaults: ['mode' => null], methods: ['GET', 'POST'])]
- public function dashboard(Request $request,
- ProduitRepository $produitRepository,
- UrlRepository $urlRepository,
- VendeurRepository $vendeurRepository,
- ConfigurationRepository $configurationRepository,
- $mode): Response
- {
- //tableau pour le stockage des résultats [nomProduit] = Array(urlEntity1, urlEntity2...)
- $resultat = Array();
- $correspondanceProduitId = Array();
- $prixReferents = Array();
- $tousLesVendeurs = $vendeurRepository->findAll();
- //récupère tous les produits
- //$produits = $produitRepository->findAll();
- if($mode == null){
- $produits = $produitRepository->getProduits();
- }elseif($mode == "integrateur"){
- $produits = $produitRepository->findBy([],['id' => 'DESC']);
- }
- $vendeurReferentPrimaire = $configurationRepository->findOneBy(["parametre" => "vendeurReferentPrimaire"])->getValeur();
- $vendeurReferentSecondaire = $configurationRepository->findOneBy(["parametre" => "vendeurReferentSecondaire"])->getValeur();
- $dashboardUrlsRapide = $configurationRepository->findOneBy(["parametre" => "dashboardUrlsRapide"])->getValeur();
- //filtre de recherche pour le dashboard
- //création du formulaire
- $filtre = new Filtre();
- $form = $this->createForm(FiltreType::class, $filtre);
- $form->handleRequest($request);
- if ($form->isSubmitted() && $form->isValid()) {
- /*
- /Si une ou plusieurs marques ont été choisi, on prend le tableau des valeur du formulaire et on lance
- /une nouvelle récupération des produits qui respectent la ou les marques choisi
- */
- if(isset($_POST['filtre']['marque'])){
- $produits = $produitRepository->findBy(
- ['marque' => $_POST['filtre']['marque']]
- );
- }
- /*
- /Si une ou plusieurs produits ont été choisi, on prend le tableau des valeurs du formulaire et on lance
- /une nouvelle récupération des produits qui respectent la ou les produits choisi
- */
- if(isset($_POST['filtre']['produit'] )){
- $produits = $produitRepository->findBy(
- ['id' => $_POST['filtre']['produit']]
- );
- }
- }
- //findUrlsByIdProduitAndVendeur
- //Mise en variable des résultats [nomProduit] = Array(urlEntity1, urlEntity2...)
- foreach ($produits as $produit) {
- $resultat[$produit->getNom()] = $urlRepository->findUrlsByIdProduit($produit->getId());
- $correspondanceProduitId[$produit->getNom()] = $produit->getId();
- if ($form->isSubmitted() && $form->isValid()) {
- if(isset($_POST['filtre']['vendeur'])){
- $resultat[$produit->getNom()] = $urlRepository->findUrlsByIdProduitAndVendeur($produit->getId(),$_POST['filtre']['vendeur']);
- }
- }
- foreach ($urlRepository->findUrlsByIdProduit($produit->getId()) as $url){
- if($url->getVendeur() == $vendeurReferentPrimaire || $url->getVendeur() == $vendeurReferentSecondaire){
- $prixReferents[$produit->getNom()] = $url->getPrix();
- }
- }
- }
- return $this->render('frontend/index.html.twig', [
- 'produits' => $resultat,
- 'correspondanceProduitId' => $correspondanceProduitId,
- 'prixReferents' => $prixReferents,
- 'tousLesVendeurs' => $tousLesVendeurs,
- 'dashboardUrlsRapide'=>$dashboardUrlsRapide,
- 'form' => $form->createView(),
- ]);
- }
- }