<?php
namespace App\Controller\Back;
use App\Entity\Content;
use App\Entity\SliderHeader;
use App\Form\ContentType;
use App\Repository\ContentRepository;
use App\Repository\SliderHeaderRepository;
use App\Services\UploadFileService;
use App\Form\SliderType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/admin")
*/
class ContentController extends AbstractController
{
/**
* @Route("/contenu", name="back_content_list")
*/
public function list(ContentRepository $contentRepository)
{
return $this->render('back/content/list.html.twig', [
'contents' => $contentRepository->groupByPage()
]);
}
/**
* @Route("/contenu/{slug}", name="back_content_single")
*/
public function single(string $slug, ContentRepository $contentRepository)
{
return $this->render('back/content/single.html.twig', [
'sections' => $contentRepository->findBy(['page' => $slug]),
'slug' => $slug
]);
}
/**
* @Route("/contenu/edit/{id}", name="back_content_edit")
*/
public function edit(Content $content, Request $request, EntityManagerInterface $em, UploadFileService $uploadFileService)
{
$oldImage = $content->getImage();
$form = $this->createForm(ContentType::class, $content)->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if ($content->getImage()) {
$filename = $uploadFileService->uploadImage($content->getImage(), UploadFileService::POST_IMAGE_DIR);
$content->setImage($filename);
} else {
$content->setImage($oldImage);
}
$em->flush();
$this->addFlash('success', 'Section éditée !');
return $this->redirectToRoute('back_content_single', ['slug' => $content->getPage()]);
}
return $this->render('back/content/edit.html.twig', [
'form' => $form->createView(),
'content' => $content
]);
}
/**
* @Route("/slider/add", name="back_slider_add")
*/
public function addSlide(Request $request, UploadFileService $uploadFileService, EntityManagerInterface $em)
{
$sliderHeader = new SliderHeader();
$form = $this->createForm(SliderType::class, $sliderHeader)->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if ($sliderHeader->getImage1()) {
$filename = $uploadFileService->uploadImage($sliderHeader->getImage1(), UploadFileService::POST_IMAGE_DIR);
$sliderHeader->setImage1($filename);
}
if ($sliderHeader->getImage2()) {
$filename = $uploadFileService->uploadImage($sliderHeader->getImage2(), UploadFileService::POST_IMAGE_DIR);
$sliderHeader->setImage2($filename);
}
if ($sliderHeader->getImage3()) {
$filename = $uploadFileService->uploadImage($sliderHeader->getImage3(), UploadFileService::POST_IMAGE_DIR);
$sliderHeader->setImage3($filename);
}
if ($sliderHeader->getImage4()) {
$filename = $uploadFileService->uploadImage($sliderHeader->getImage4(), UploadFileService::POST_IMAGE_DIR);
$sliderHeader->setImage4($filename);
}
$em->persist($sliderHeader);
$em->flush();
$this->addFlash('success', 'Slider créé');
return $this->redirectToRoute('back_slider_list');
}
return $this->render('back/slider/add.html.twig', [
'form' => $form->createView(),
'slider' => $sliderHeader
]);
}
/**
* @Route("/slider/edit/{id}", name="back_slider_edit")
*/
public function editSlide(SliderHeader $sliderHeader, Request $request, UploadFileService $uploadFileService, EntityManagerInterface $em)
{
$oldImage1 = $sliderHeader->getImage1();
$oldImage2 = $sliderHeader->getImage2();
$oldImage3 = $sliderHeader->getImage3();
$oldImage4 = $sliderHeader->getImage4();
$form = $this->createForm(SliderType::class, $sliderHeader)->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if ($sliderHeader->getImage1()) {
$filename = $uploadFileService->uploadImage($sliderHeader->getImage1(), UploadFileService::POST_IMAGE_DIR);
$sliderHeader->setImage1($filename);
} else {
$sliderHeader->setImage1($oldImage1);
}
if ($sliderHeader->getImage2()) {
$filename = $uploadFileService->uploadImage($sliderHeader->getImage2(), UploadFileService::POST_IMAGE_DIR);
$sliderHeader->setImage2($filename);
} else {
$sliderHeader->setImage2($oldImage2);
}
if ($sliderHeader->getImage3()) {
$filename = $uploadFileService->uploadImage($sliderHeader->getImage3(), UploadFileService::POST_IMAGE_DIR);
$sliderHeader->setImage3($filename);
} else {
$sliderHeader->setImage3($oldImage3);
}
if ($sliderHeader->getImage4()) {
$filename = $uploadFileService->uploadImage($sliderHeader->getImage4(), UploadFileService::POST_IMAGE_DIR);
$sliderHeader->setImage4($filename);
} else {
$sliderHeader->setImage4($oldImage4);
}
$em->persist($sliderHeader);
$em->flush();
$this->addFlash('success', 'Slider edité');
return $this->redirectToRoute('back_slider_list');
}
return $this->render('back/slider/edit.html.twig', [
'form' => $form->createView(),
'slider' => $sliderHeader
]);
}
/**
* @Route("/slider/list", name="back_slider_list")
*/
public function sliderList(SliderHeaderRepository $sliderHeaderRepository)
{
return $this->render('back/slider/list.html.twig', [
'sliders' => $sliderHeaderRepository->findBy([], ['id' => 'ASC '])
]);
}
/**
* @Route("/slider/remove/{id}/{image}", name="back_slider_remove_img")
*/
public function removeImage(int $id, string $image, SliderHeaderRepository $sliderHeaderRepository, EntityManagerInterface $em)
{
$slide = $sliderHeaderRepository->findOneBy(['id' => $id, 'image1' => $image]);
if ($slide) {
$slide->setImage1(null);
}
$slide = $sliderHeaderRepository->findOneBy(['id' => $id, 'image2' => $image]);
if ($slide) {
$slide->setImage2(null);
}
$slide = $sliderHeaderRepository->findOneBy(['id' => $id, 'image3' => $image]);
if ($slide) {
$slide->setImage3(null);
}
$slide = $sliderHeaderRepository->findOneBy(['id' => $id, 'image4' => $image]);
if ($slide) {
$slide->setImage4(null);
}
$em->flush();
return $this->redirectToRoute('back_slider_edit', ['id' => $id]);
}
}