<?php
namespace App\Controller;
use App\Entity\User;
use App\Entity\Category;
use App\Entity\SousCategory;
use App\Entity\Choix;
use App\Entity\Requete;
use App\Entity\ListesFavoris;
use App\Repository\ArticleMetaRepository;
use App\Repository\ArticleRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
class HomeController extends AbstractController
{
/**
* @Route("/home", name="home")
*/
public function index(EntityManagerInterface $entityManager)
{
$category = $entityManager->getRepository(Category::class)->findAll();
$sousCategory = $entityManager->getRepository(SousCategory::class)->findAll();
$requete = $entityManager->getRepository(Requete::class)->findAll();
$choix = $entityManager->getRepository(Choix::class)->findAll();
$articlesFavsIds = [];
$user = $this->getUser();
if($user != null){
$listeFavs = $entityManager->getRepository(ListesFavoris::class)->findByUser($user);
foreach($listeFavs as $fav){
$articlesFavs = $fav->getArticlesFavoris();
foreach($articlesFavs as $articleFav){
$articlesFavsIds [] = $articleFav->getArticle()->getId();
}
}
}
return $this->render('home/index.html.twig', [
'category'=> $category,
'sousCategory'=> $sousCategory,
'requete' => $requete,
'choix' => $choix,
'favs' => $articlesFavsIds,
]);
}
public function article(ArticleRepository $article,EntityManagerInterface $entityManager)
{
$category = $entityManager->getRepository(Category::class)->findAll();
$sousCategory = $entityManager->getRepository(SousCategory::class)->findAll();
return $this->render("home/index.html.twig",[
'article'=> $article->findAll(),
'category'=> $category,
'sousCategory'=> $sousCategory,
]);
}
public function articleMeta(ArticleMetaRepository $articlemeta,EntityManagerInterface $entityManager)
{
$category = $entityManager->getRepository(Category::class)->findAll();
$sousCategory = $entityManager->getRepository(SousCategory::class)->findAll();
return $this->render("home/index.html.twig",[
'articles'=> $articlemeta->findAll(),
'category'=> $category,
'sousCategory'=> $sousCategory,
]);
}
public function user(EntityManagerInterface $entityManager)
{
$category = $entityManager->getRepository(Category::class)->findAll();
$sousCategory = $entityManager->getRepository(SousCategory::class)->findAll();
return $this->render('user/user.html.twig', [
'category'=> $category,
'sousCategory'=> $sousCategory
]);
}
/**
* *Récupérer les sous catégorie de la catégorie current
*
* @Route("/home/getTabSousCat", name="getTab_SousCat")
*/
public function getTabSousCat(Request $request,EntityManagerInterface $entityManager) : Response {
$idCat = $request->get('id');
$res=[];
$SousCat = $entityManager->getRepository(SousCategory::class)->findBy([
'category' => $idCat]);
foreach($SousCat as $SousCats){
array_push($res, $SousCats->to_arraytabSousCat());
}
return new JsonResponse($res);
}
/**
* @Route("/user/profil/modifier", name="/edit")
*/
public function editProfil(request $request, UserPasswordHasherInterface $passwordHasher,EntityManagerInterface $entityManager)
{
if($request->isMethod('POST'))
{
/** @var User $user */
$user=$this->getUser();
//on vérifie si les deux mots de passe sont identiques
if($request->request->get('pass1')==$request->request->get('pass2')){
$hashedPassword = $passwordHasher->hashPassword($user,$request->get('pass1'));
$user->setPassword($hashedPassword);
$entityManager->flush();
$this->addFlash('message','votre mot de passe a mis à jour avec succès');
return $this->redirectToRoute('user');
}else{
$this->addFlash('error','les deux mots de passe ne sont pas identiques');
}
}
$category = $entityManager->getRepository(Category::class)->findAll();
$sousCategory = $entityManager->getRepository(SousCategory::class)->findAll();
return $this->render('user/editprofil.html.twig',['category'=> $category,
'sousCategory'=> $sousCategory,
]);
}
public function add(EntityManagerInterface $entityManager)
{
$category = $entityManager->getRepository(Category::class)->findAll();
$sousCategory = $entityManager->getRepository(SousCategory::class)->findAll();
return $this->render('home/add.html.twig',['category'=> $category,
'sousCategory'=> $sousCategory,
]);
}
public function show($url,EntityManagerInterface $entityManager)
{
$category = $entityManager->getRepository(Category::class)->findAll();
$sousCategory = $entityManager->getRepository(SousCategory::class)->findAll();
return $this->render('home/show.html.twig', [
'slug' => $url,
'category'=> $category,
'sousCategory'=> $sousCategory,
]);
}
public function edit($id,EntityManagerInterface $entityManager)
{
$category = $entityManager->getRepository(Category::class)->findAll();
$sousCategory = $entityManager->getRepository(SousCategory::class)->findAll();
return $this->render('home/edit.html.twig', [
'slug' => $id,
'category'=> $category,
'sousCategory'=> $sousCategory,
]);
}
public function remove($id)
{
return new Response('<h1>Delete ressource: ' .$id. '</h1>');
}
/**
* Récupérer le nombre de choix
*
* @Route("/home/getNbrChoix", name="getNbr_Choix")
*/
public function getNbrChoix(EntityManagerInterface $entityManager) : Response {
$i = 0;
$Chx = $entityManager->getRepository(Choix::class)->findAll();
$i = count($Chx);
return new JsonResponse($i);
}
}