<?php
namespace App\Controller;
use App\Entity\Produit;
use App\Form\ProduitType;
use App\Service\FileUploader;
use App\Repository\MenuRepository;
use App\Repository\SousmenuRepository;
use App\Repository\ProduitRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use App\Repository\CategoryRepository;
#[Route('/produit')]
class ProduitController extends AbstractController
{
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
#[Route('/produit', name: 'app_produit_index', methods: ['GET','POST'])]
public function index(ProduitRepository $produitRepository,CategoryRepository $categoryRepository, MenuRepository $menuRepository): Response
{
return $this->render('produit/index.html.twig', [
'products' => $produitRepository->findAll(),
'menus' => $menuRepository->findAll(),
'categories'=>$categoryRepository->findAll()
]);
}
#[Route('/new', name: 'app_produit_new', methods: ['GET', 'POST'])]
public function new(FileUploader $fileUploader, ValidatorInterface $validator, CategoryRepository $categoryRepository, Request $request, SousmenuRepository $sousmenuRepository, MenuRepository $menuRepository): Response
{
$submit = $request->request->get('submit');
$errors = null;
if ($submit) {
$menu = new Produit();
/* $menu->setSousmenu($sousmenuRepository->find($request->request->get('menu'))); */
$menu->setCategory($categoryRepository->find($request->request->get('menu')));
$menu->setName($request->request->get('libelle'));
// $menu->setPath($request->request->get('path'));
$menu->setDescription($request->request->get('observation'));
$menu->setPrice($request->request->get('price'));
$tab = null;
if ($request->files->get('file')) {
foreach ($request->files->get('file') as $value) {
$FileName = $fileUploader->upload($value);
$tab[] = $FileName;
}
$menu->setImage($tab);
}
$errors = $validator->validate($menu);
if (count($errors) > 0) {
$errorsString = (string) $errors;
}
else {
$this->em->persist($menu);
$this->em->flush();
return $this->redirectToRoute('app_produit_index', [], Response::HTTP_SEE_OTHER);
}
}
return $this->renderForm('produit/new.html.twig', [
'menus' => $menuRepository->findAll(),
'sousmenus' => $sousmenuRepository->findAll(),
'categories' => $categoryRepository->findAll(),
'errors' => $errors,
]);
}
#[Route('produit/edit/{id}/', name: 'app_produit_edit', methods: ['GET', 'POST'])]
public function edit(FileUploader $fileUploader, ValidatorInterface $validator, Request $request, Produit $produit, CategoryRepository $categoryRepository,
MenuRepository $menuRepository): Response
{
$submit = $request->request->get('submit');
$errors = null;
if ($submit) {
$produit->setCategory($categoryRepository->find($request->request->get('menu')));
$produit->setName($request->request->get('libelle'));
$produit->setDescription($request->request->get('observation'));
$produit->setPrice($request->request->get('price'));
$errors = $validator->validate($produit);
$tab = null;
if ($request->files->get('file')) {
// $FileName = $fileUploader->upload($request->files->get('file'));
foreach ($request->files->get('file') as $value) {
$FileName = $fileUploader->upload($value);
$tab[] = $FileName;
}
$produit->setImage($tab);
} /* else {
if ($oldphoto) {
foreach ($oldphoto as $value) {
$tab[] = $value;
}
$sousmenu2->setImage($tab);
}
} */
/* else {
if ($oldvideo) {
foreach ($oldvideo as $value) {
$tabvid[] = $value;
}
$sousmenu2->setVideo($tabvid);
}
} */
if (count($errors) > 0) {
$errorsString = (string) $errors;
}else {
$this->em->persist($produit);
$this->em->flush();
return $this->redirectToRoute('app_produit_index', [], Response::HTTP_SEE_OTHER);
}
}
return $this->renderForm('produit/edit.html.twig', [
'idcategory' => $produit->getCategory()->getId(),
'idProduit'=> $produit->getId(),
'produit' => $produit,
'categories' => $categoryRepository->findAll(),
'menus' => $menuRepository->findAll(),
'errors' => $errors,
]);
}
/* #[Route('/{id}', name: 'app_sousmenu2_delete', methods: ['POST'])]
public function delete(Request $request, Sousmenu2 $sousmenu2, Sousmenu2Repository $sousmenu2Repository): Response
{
if ($this->isCsrfTokenValid('delete'.$sousmenu2->getId(), $request->request->get('_token'))) {
$sousmenu2Repository->remove($sousmenu2, true);
}
return $this->redirectToRoute('app_sousmenu2_index', [], Response::HTTP_SEE_OTHER);
} */
#[Route('produit/supprimer/{id}', name: 'app_produit_delete', methods: ['POST'])]
public function delete(Request $request, Produit $produit, MenuRepository $menuRepository): Response
{
//dd( $menu);
if ($this->isCsrfTokenValid('delete'.$produit->getId(), $request->request->get('_token'))) {
$this->em->remove($produit);
$this->em->flush();
}
return $this->redirectToRoute('app_produit_index', [], Response::HTTP_SEE_OTHER);
}
}