<?php
namespace App\Controller;
use App\Model\Search;
use App\Entity\Produit;
use App\Entity\Annonces;
use App\Entity\Sousmenu;
use App\Form\SearchType;
use App\Model\SearchData;
use App\Entity\Actualites;
use App\Form\SousmenuType;
use App\Service\FileUploader;
use App\Repository\MenuRepository;
use App\Repository\SlideRepository;
use App\Repository\MembreRepository;
use App\Repository\ProduitRepository;
use App\Repository\AnnoncesRepository;
use App\Repository\SousmenuRepository;
use App\Repository\ActualitesRepository;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
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;
class SousmenuController extends AbstractController
{
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
#[Route('/sous_menu', name: 'app_sousmenu_index', methods: ['GET','POST'])]
public function index(SousmenuRepository $sousmenuRepository): Response
{
return $this->render('sousmenu/index.html.twig', [
'sousmenus' => $sousmenuRepository->findAll(),
]);
}
#[Route('sous_menu/{id}/desactive-status', name: 'app_sousmenu_desactive_status', methods: ['GET','POST'])]
public function desactiveStatus(Sousmenu $sousmenu, Request $request)
{
$sousmenu->setStatut(false);
$this->em->persist($sousmenu);
$this->em->flush();
return $this->redirectToRoute('app_sousmenu_index', [], Response::HTTP_SEE_OTHER);
}
#[Route('sous_menu/{id}/active-status', name: 'app_sousmenu_active_status', methods: ['GET','POST'])]
public function activeStatus(Sousmenu $sousmenu, Request $request)
{
$sousmenu->setStatut(true);
$this->em->persist($sousmenu);
$this->em->flush();
return $this->redirectToRoute('app_sousmenu_index', [], Response::HTTP_SEE_OTHER);
}
#[Route('sousmenu/new', name: 'app_sousmenu_new', methods: ['GET', 'POST'])]
public function new(FileUploader $fileUploader, ValidatorInterface $validator, Request $request, MenuRepository $menuRepository, SousmenuRepository $sousmenuRepository): Response
{
$submit = $request->request->get('submit');
$errors = null;
if ($submit) {
//dd($request);
$menu = new Sousmenu();
$menu->setMenus($menuRepository->find($request->request->get('menu')));
$menu->setIntitule($request->request->get('libelle'));
$menu->setPath($request->request->get('path'));
$menu->setContent($request->request->get('observation'));
$menu->setStatut($request->request->get('statut'));
$tab = null;
$tabvid = null;
if ($request->files->get('file')) {
foreach ($request->files->get('file') as $value) {
$FileName = $fileUploader->upload($value);
$tab[] = $FileName;
}
$menu->setImage($tab);
}
if ($request->files->get('video')) {
foreach ($request->files->get('video') as $value) {
$FileName = $fileUploader->upload($value);
$tabvid[] = $FileName;
}
$menu->setVideo($tabvid);
}
$errors = $validator->validate($menu);
if (count($errors) > 0) {
$errorsString = (string) $errors;
}else {
$this->em->persist($menu);
$this->em->flush();
return $this->redirectToRoute('app_sousmenu_index', [], Response::HTTP_SEE_OTHER);
}
}
return $this->renderForm('sousmenu/new.html.twig', [
'menus' => $menuRepository->findAll(),
'errors' => $errors,
]);
}
/* #[Route('/textes', name: 'app_sousmenu_textes', methods: ['GET'])]
public function textes(MenuRepository $menuRepository, SousmenuRepository $sousmenuRepository): Response
{
$sousmenu=$sousmenuRepository->findOneBy(['path' => 'app_sousmenu_textes']);
return $this->render('sousmenu/textes.html.twig', [
'menus'=>$menuRepository->findAll(),
'sousmenu'=>$sousmenu,
]);
} */
#[Route('/membres', name: 'app_sousmenu_membres', methods: ['GET'])]
public function membres(MenuRepository $menuRepository, MembreRepository $membreRepository): Response
{
$imagelink=null;
$membre=$membreRepository->findBy(['statut'=>1]);
return $this->render('sousmenu/membres.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'membre'=>$membre,
'imagelink' => $imagelink
]);
}
#[Route('/actualites', name: 'app_sousmenu_actualites', methods: ['GET'])]
public function actualites(MenuRepository $menuRepository, ActualitesRepository $actualitesRepository, Request $request): Response
{
$imagelink=null;
$page = $request->query->get('page', 1);
$limit = 4; // number of items per page
$offset = ($page - 1) * $limit;
$actualites=$actualitesRepository->findBy(['status'=>1], [], $limit, $offset);
$totalItems = $actualitesRepository->count([]);
$totalPages = ceil($totalItems / $limit);
return $this->render('sousmenu/actualites.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'actualites'=>$actualites,
'totalItems' => $totalItems,
'totalPages' => $totalPages,
'currentPage' => $page,
'imagelink' => $imagelink
]);
}
#[Route('/annonces', name: 'app_sousmenu_annonces', methods: ['GET'])]
public function annonces(MenuRepository $menuRepository, AnnoncesRepository $annoncesRepository, Request $request): Response
{
$imagelink=null;
$page = $request->query->get('page', 1);
$limit = 6; // number of items per page
$offset = ($page - 1) * $limit;
$annonces=$annoncesRepository->findBy(['statut'=>1], [], $limit, $offset);
$totalItems = $annoncesRepository->count([]);
$totalPages = ceil($totalItems / $limit);
return $this->render('sousmenu/annonces.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'annonces'=>$annonces,
'totalItems' => $totalItems,
'totalPages' => $totalPages,
'currentPage' => $page,
'imagelink' => $imagelink
]);
}
/* #[Route('/actualites', name: 'app_sousmenu_actualites', methods: ['GET'])]
public function actualites(MenuRepository $menuRepository): Response
{
return $this->render('sousmenu/actualites.html.twig', [
'menus'=>$menuRepository->findAll()
]);
} */
/* #[Route('/actualites', name: 'app_sousmenu_actualites', methods: ['GET'])]
public function actualites(MenuRepository $menuRepository, ActualitesRepository $actualitesRepository, Request $request, PaginatorInterface $paginator ): Response
{
$imagelink=null;
$pagination=$paginator->paginate(
$actualitesRepository->paginationQuery(),
$request->query->get('page',1),
6
);
return $this->render('sousmenu/actualites.html.twig', [
'menus'=>$menuRepository->findAll(),
'pagination' => $pagination,
'imagelink' => $imagelink
]);
} */
#[Route('/actualites/{id}/show', name: 'actualite_show', methods: ['GET'])]
public function show(MenuRepository $menuRepository,ActualitesRepository $actualitesRepository, Actualites $actualites ):Response
{
$imagelink='upload/'.$actualites->getImage()[0];
return $this->render('sousmenu/actshow.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'actualites' => $actualites,
'imagelink' => $imagelink
]);
}
/* #[Route('/annonces', name: 'app_sousmenu_annonces', methods: ['GET'])]
public function annonces(MenuRepository $menuRepository, AnnoncesRepository $annoncesRepository, Request $request, PaginatorInterface $paginator ): Response
{
$imagelink=null;
$pagination=$paginator->paginate(
$annoncesRepository->paginationQuery(),
$request->query->get('page',1),
6,
);
return $this->render('sousmenu/annonces.html.twig', [
'menus'=>$menuRepository->findAll(),
'pagination' => $pagination,
'imagelink' => $imagelink
]);
} */
#[Route('annonces/{id}/show', name: 'annonces_show', methods: ['GET'])]
public function showan(MenuRepository $menuRepository,AnnoncesRepository $annoncesRepository, Annonces $annonces ):Response
{
$imagelink='upload/'.$annonces->getImage()[0];
return $this->render('sousmenu/annshow.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'annonces' => $annonces,
'imagelink' => $imagelink
]);
}
#[Route('/confession', name: 'app_sousmenu_confession', methods: ['GET'])]
public function confession(MenuRepository $menuRepository, SlideRepository $slideRepository): Response
{
$imagelink=null;
return $this->render('sousmenu/confession.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'slids'=>$slideRepository->findAll(),
'imagelink'=>$imagelink
]);
}
#[Route('/decouvertees', name: 'app_sousmenu_decouvertees', methods: ['GET'])]
public function decouvertees(MenuRepository $menuRepository, ProduitRepository $repository, Request $request): Response
{
$imagelink=null;
$search = new Search();
$form = $this->createForm(SearchType::class, $search);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$products = $repository->findBySearch($search);
} else {
$products = $repository->findAll();
}
return $this->renderForm('sousmenu/decouverteES.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'products' => $products,
'form' => $form,
'imagelink'=>$imagelink
]);
return $this->render('sousmenu/decouverteES.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'products'=>$repository->findAll(),
'imagelink'=>$imagelink
]);
}
#[Route('decouvertees/{id}/show', name: 'produit_show', methods: ['GET'])]
public function detail(MenuRepository $menuRepository, Produit $produit): Response
{
$imagelink=null;
return $this->render('sousmenu/detailproduit.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'produit' => $produit,
'imagelink'=>$imagelink
]);
}
#[Route('/reportages', name: 'app_sousmenu_reportages', methods: ['GET'])]
public function reportages(MenuRepository $menuRepository): Response
{
$imagelink=null;
return $this->render('sousmenu/reportages.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'imagelink'=>$imagelink
]);
}
#[Route('/sondages', name: 'app_sousmenu_sondages', methods: ['GET'])]
public function sondages (MenuRepository $menuRepository): Response
{
$imagelink=null;
return $this->render('sousmenu/sondages.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'imagelink'=>$imagelink
]);
}
#[Route('/formations', name: 'app_sousmenu_formations', methods: ['GET'])]
public function formations (MenuRepository $menuRepository): Response
{
$imagelink=null;
return $this->render('sousmenu/formations.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'imagelink'=>$imagelink
]);
}
#[Route('/telechargements', name: 'app_sousmenu_telechargements', methods: ['GET'])]
public function telechargements (MenuRepository $menuRepository): Response
{
$imagelink=null;
return $this->render('sousmenu/telechargements.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'imagelink'=>$imagelink
]);
}
#[Route('/espacemembre', name: 'app_menu_espacemembre', methods: ['GET'])]
public function espacemembre(MenuRepository $menuRepository): Response
{
$imagelink=null;
return $this->render('sousmenu/espacemembre.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'imagelink'=>$imagelink
]);
}
#[Route('/devenirmembre', name: 'app_menu_devenirmembre', methods: ['GET'])]
public function devenirmembre(MenuRepository $menuRepository): Response
{
$imagelink=null;
return $this->render('sousmenu/devenirmembre.html.twig', [
'menus' => $menuRepository->findBy(array(),
array('position'=>'ASC')),
'imagelink'=>$imagelink
]);
}
#[Route('/{id}', name: 'app_sousmenu_show', methods: ['GET'])]
/* public function show(Sousmenu $sousmenu): Response
{
return $this->render('sousmenu/show.html.twig', [
'sousmenu' => $sousmenu,
]);
} */
#[Route('sousmenu/edit/{id}', name: 'app_sousmenu_edit', methods: ['GET', 'POST'])]
public function edit(FileUploader $fileUploader,ValidatorInterface $validator, Request $request, MenuRepository $menuRepository, Sousmenu $sousmenu): Response
{ $imagelink=null;
$submit = $request->request->get('submit');
/* $oldphoto = $sousmenu->getImage();
$oldvideo = $sousmenu->getVideo(); */
$errors = null;
if ($submit) {
$sousmenu->setMenus($menuRepository->find($request->request->get('menu')));
$sousmenu->setIntitule($request->request->get('libelle'));
$sousmenu->setPath($request->request->get('path'));
$sousmenu->setContent($request->request->get('observation'));
$menu->setStatut($request->request->get('statut'));
$tab = null;
$tabvid = 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;
}
$sousmenu->setImage($tab);
} /* else {
if ($oldphoto) {
foreach ($oldphoto as $value) {
$tab[] = $fileUploader->upload($value);
}
$sousmenu->setImage($tab);
}
} */
if ($request->files->get('video')) {
foreach ($request->files->get('video') as $value) {
$FileName = $fileUploader->upload($value);
$tabvid[] = $FileName;
}
$sousmenu->setVideo($tabvid);
}/* else {
if ($oldvideo) {
foreach ($oldvideo as $value) {
$tabvid[] = $value;
}
$sousmenu->setVideo($tabvid);
}
} */
$errors = $validator->validate($sousmenu);
if (count($errors) > 0) {
$errorsString = (string) $errors;
} else {
$this->em->persist($sousmenu);
$this->em->flush();
return $this->redirectToRoute('app_sousmenu_index', [], Response::HTTP_SEE_OTHER);
}
}
return $this->renderForm('sousmenu/edit.html.twig', [
'idMenu' => $sousmenu->getMenus()->getId(),
'idSousMenu'=> $sousmenu->getId(),
'sousmenu' => $sousmenu,
'menus' => $menuRepository->findAll(),
'errors' => $errors,
'imagelink'=>$imagelink
]);
}
/* #[Route('/{id}', name: 'app_sousmenu_delete', methods: ['POST'])]
public function delete(Request $request, Sousmenu $sousmenu, SousmenuRepository $sousmenuRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$sousmenu->getId(), $request->request->get('_token'))) {
$sousmenuRepository->remove($sousmenu, true);
}
return $this->redirectToRoute('app_sousmenu_index', [], Response::HTTP_SEE_OTHER);
} */
#[Route('sousmenu/supprimer/{id}', name: 'app_sousmenu_delete', methods: ['POST'])]
public function delete(Request $request, Sousmenu $sousmenu, MenuRepository $menuRepository): Response
{
//dd( $menu);
if ($this->isCsrfTokenValid('delete'.$sousmenu->getId(), $request->request->get('_token'))) {
$this->em->remove($sousmenu);
$this->em->flush();
}
return $this->redirectToRoute('app_sousmenu_index', [], Response::HTTP_SEE_OTHER);
}
}