<?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', name: 'app_dashboard', methods: ['GET', 'POST'])]
public function dashboard(Request $request,
ProduitRepository $produitRepository,
UrlRepository $urlRepository,
VendeurRepository $vendeurRepository,
ConfigurationRepository $configurationRepository,
): 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();
$produits = $produitRepository->getProduits();
$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(),
]);
}
}