<?php
namespace App\Controller;
use App\Entity\Modele;
use App\Form\ModeleType;
use App\Repository\ModeleRepository;
use App\Repository\ReseauRepository;
use App\Repository\TypeDeviceRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpClient\HttpClient;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class ModelesController extends AbstractController
{
/**
* Affiche la page d'accueil
* @Route("/", name="home")
*/
public function index()
{
return $this->render('home.html.twig');
}
/**
* Affiche la liste des modèles
* @Route("/modeles", name="modeles")
*/
public function afficherModeles(ModeleRepository $modeleRepository)
{
$modeles = $modeleRepository->findAll();
return $this->render('modeles/index.html.twig', [
'modeles' => $modeles,
]);
}
/**
* Formulaire pour créer un modèle
* @Route("/modeles/creer_modele", name="creer_modele")
*
*/
public function creerModele(Request $request, TypeDeviceRepository $typeDeviceRepository)
{
$this->denyAccessUnlessGranted('ROLE_EDIT'); // restreindre l'accès si l'utilisateur n'a pas au moins le role EDIT.
$typesDevice = $typeDeviceRepository->findAll();
$modele = new Modele();
$photo1 = $modele->getPhoto1();
$photo2 = $modele->getPhoto2();
$photo3 = $modele->getPhoto3();
$form = $this->createForm(ModeleType::class, $modele);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
//Conditions d'ajout des photos dans la BDD à partir du formulaire
//Si photoForm est pas null ET photoBDD est null
//OU
//Si photoForm est pas null ET photoBDD est pas null
if ((!empty($form['photo1']->getData()) && empty($photo1)) || (!empty($form['photo1']->getData()) && !empty($photo1))) {
//On garde celle du formulaire
$modele->setPhoto1(base64_encode(file_get_contents($form['photo1']->getData())));
//Si photoForm est null ET photoBDD est pas null
} else if (empty($form['photo1']->getData() && !empty($photo1))) {
//Si l'utilisateur a supprimé une image
if ($_POST['isPhoto1'] == "deleted") {
//La photo reste vide
$modele->setPhoto1(null);
//Si l'utilisateur n'a changé d'image
} else if ($_POST['isPhoto1'] == "notChanged") {
//On garde photoBDD
$modele->setPhoto1($photo1);
//Si l'utilisateur a changé de photo
} else if($_POST['isPhoto1'] == "changed") {
$modele->setPhoto1(base64_encode(file_get_contents($form['photo1']->getData())));
}
//Si les 2 sont null
} else {
//La photo reste vide
$modele->setPhoto1(null);
}
//Conditions d'ajout des photos dans la BDD à partir du formulaire
//Si photoForm est pas null ET photoBDD est null
//OU
//Si photoForm est pas null ET photoBDD est pas null
if ((!empty($form['photo2']->getData()) && empty($photo2)) || (!empty($form['photo2']->getData()) && !empty($photo2))) {
//On garde celle du formulaire
$modele->setPhoto2(base64_encode(file_get_contents($form['photo2']->getData())));
//Si photoForm est null ET photoBDD est pas null
} else if (empty($form['photo2']->getData() && !empty($photo2))) {
//Si l'utilisateur a supprimé une image
if ($_POST['isPhoto2'] == "deleted") {
//La photo reste vide
$modele->setPhoto2(null);
//Si l'utilisateur n'a changé d'image
} else if ($_POST['isPhoto2'] == "notChanged") {
//On garde photoBDD
$modele->setPhoto2($photo2);
} else if($_POST['isPhoto2'] == "changed") {
$modele->setPhoto2(base64_encode(file_get_contents($form['photo2']->getData())));
}
//Si les 2 sont null
} else {
//La photo reste vide
$modele->setPhoto2(null);
}
//Conditions d'ajout des photos dans la BDD à partir du formulaire
//Si photoForm est pas null ET photoBDD est null
//OU
//Si photoForm est pas null ET photoBDD est pas null
if ((!empty($form['photo3']->getData()) && empty($photo3)) || (!empty($form['photo3']->getData()) && !empty($photo3))) {
//On garde celle du formulaire
$modele->setPhoto3(base64_encode(file_get_contents($form['photo3']->getData())));
//Si photoForm est null ET photoBDD est pas null
} else if (empty($form['photo3']->getData() && !empty($photo3))) {
//Si l'utilisateur a supprimé une image
if ($_POST['isPhoto3'] == "deleted") {
//La photo reste vide
$modele->setPhoto3(null);
//Si l'utilisateur n'a changé d'image
} else if ($_POST['isPhoto3'] == "notChanged") {
//On garde photoBDD
$modele->setPhoto3($photo3);
} else if($_POST['isPhoto3'] == "changed") {
$modele->setPhoto3(base64_encode(file_get_contents($form['photo3']->getData())));
}
//Si les 2 sont null
} else {
//La photo reste vide
$modele->setPhoto3(null);
}
$entityManager->persist($modele);
$entityManager->flush();
return $this->redirectToRoute('modeles');
}
return $this->render('modeles/creer_modele.html.twig', [
'form' => $form->createView(),
'typesDevice' =>$typesDevice
]);
}
/**
* Formulaire de modification d'un modèle
* @Route("/modeles/modifier_modele/{id_modele}", name="modifier_modele")
*/
public function modifierModele(int $id_modele, ModeleRepository $modeleRepository, Request $request)
{
$this->denyAccessUnlessGranted('ROLE_EDIT'); // restreindre l'accès si l'utilisateur n'a pas au moins le role EDIT.
$modele = $modeleRepository->find($id_modele);
$photo1 = $modele->getPhoto1();
$photo2 = $modele->getPhoto2();
$photo3 = $modele->getPhoto3();
$form = $this->createForm(ModeleType::class, $modele);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
//Conditions d'ajout des photos dans la BDD à partir du formulaire
//Si photoForm est pas null ET photoBDD est null
//OU
//Si photoForm est pas null ET photoBDD est pas null
if ((!empty($form['photo1']->getData()) && empty($photo1)) || (!empty($form['photo1']->getData()) && !empty($photo1))) {
//On garde celle du formulaire
$modele->setPhoto1(base64_encode(file_get_contents($form['photo1']->getData())));
//Si photoForm est null ET photoBDD est pas null
} else if (empty($form['photo1']->getData() && !empty($photo1))) {
//Si l'utilisateur a supprimé une image
if ($_POST['isPhoto1'] == "deleted") {
//La photo reste vide
$modele->setPhoto1(null);
//Si l'utilisateur n'a changé d'image
} else if ($_POST['isPhoto1'] == "notChanged") {
//On garde photoBDD
$modele->setPhoto1($photo1);
//Si l'utilisateur a changé de photo
} else if($_POST['isPhoto1'] == "changed") {
$modele->setPhoto1(base64_encode(file_get_contents($form['photo1']->getData())));
}
//Si les 2 sont null
} else {
//La photo reste vide
$modele->setPhoto1(null);
}
//Conditions d'ajout des photos dans la BDD à partir du formulaire
//Si photoForm est pas null ET photoBDD est null
//OU
//Si photoForm est pas null ET photoBDD est pas null
if ((!empty($form['photo2']->getData()) && empty($photo2)) || (!empty($form['photo2']->getData()) && !empty($photo2))) {
//On garde celle du formulaire
$modele->setPhoto2(base64_encode(file_get_contents($form['photo2']->getData())));
//Si photoForm est null ET photoBDD est pas null
} else if (empty($form['photo2']->getData() && !empty($photo2))) {
//Si l'utilisateur a supprimé une image
if ($_POST['isPhoto2'] == "deleted") {
//La photo reste vide
$modele->setPhoto2(null);
//Si l'utilisateur n'a changé d'image
} else if ($_POST['isPhoto2'] == "notChanged") {
//On garde photoBDD
$modele->setPhoto2($photo2);
} else if($_POST['isPhoto2'] == "changed") {
$modele->setPhoto2(base64_encode(file_get_contents($form['photo2']->getData())));
}
//Si les 2 sont null
} else {
//La photo reste vide
$modele->setPhoto2(null);
}
//Conditions d'ajout des photos dans la BDD à partir du formulaire
//Si photoForm est pas null ET photoBDD est null
//OU
//Si photoForm est pas null ET photoBDD est pas null
if ((!empty($form['photo3']->getData()) && empty($photo3)) || (!empty($form['photo3']->getData()) && !empty($photo3))) {
//On garde celle du formulaire
$modele->setPhoto3(base64_encode(file_get_contents($form['photo3']->getData())));
//Si photoForm est null ET photoBDD est pas null
} else if (empty($form['photo3']->getData() && !empty($photo3))) {
//Si l'utilisateur a supprimé une image
if ($_POST['isPhoto3'] == "deleted") {
//La photo reste vide
$modele->setPhoto3(null);
//Si l'utilisateur n'a changé d'image
} else if ($_POST['isPhoto3'] == "notChanged") {
//On garde photoBDD
$modele->setPhoto3($photo3);
} else if($_POST['isPhoto3'] == "changed") {
$modele->setPhoto3(base64_encode(file_get_contents($form['photo3']->getData())));
}
//Si les 2 sont null
} else {
//La photo reste vide
$modele->setPhoto3(null);
}
$entityManager->persist($modele);
$entityManager->flush();
return $this->redirectToRoute('details_modele', [
'id_modele' => $modele->getId(),
]);
}
return $this->render('modeles/modifier_modele.html.twig', [
'form' => $form->createView(),
'modele' => $modele,
]);
}
/**
* Formulaire de duplication d'un modèle
* @Route("/modeles/dupliquer_modele/{id_modele}", name="dupliquer_modele")
*/
public function dupliquerModele(int $id_modele, ModeleRepository $modeleRepository, Request $request)
{
$this->denyAccessUnlessGranted('ROLE_EDIT'); // restreindre l'accès si l'utilisateur n'a pas au moins le role EDIT.
$modele = $modeleRepository->find($id_modele);
$newModele = clone $modele;
$photo1 = $newModele->getPhoto1();
$photo2 = $newModele->getPhoto2();
$photo3 = $newModele->getPhoto3();
$form = $this->createForm(ModeleType::class, $newModele);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
//Conditions d'ajout des photos dans la BDD à partir du formulaire
//Si photoForm est pas null ET photoBDD est null
//OU
//Si photoForm est pas null ET photoBDD est pas null
if ((!empty($form['photo1']->getData()) && empty($photo1)) || (!empty($form['photo1']->getData()) && !empty($photo1))) {
//On garde celle du formulaire
$newModele->setPhoto1(base64_encode(file_get_contents($form['photo1']->getData())));
//Si photoForm est null ET photoBDD est pas null
} else if (empty($form['photo1']->getData() && !empty($photo1))) {
//Si l'utilisateur a supprimé une image
if ($_POST['isPhoto1'] == "deleted") {
//La photo reste vide
$newModele->setPhoto1(null);
//Si l'utilisateur n'a changé d'image
} else if ($_POST['isPhoto1'] == "notChanged") {
//On garde photoBDD
$newModele->setPhoto1($photo1);
//Si l'utilisateur a changé de photo
} else if($_POST['isPhoto1'] == "changed") {
$newModele->setPhoto1(base64_encode(file_get_contents($form['photo1']->getData())));
}
//Si les 2 sont null
} else {
//La photo reste vide
$newModele->setPhoto1(null);
}
//Conditions d'ajout des photos dans la BDD à partir du formulaire
//Si photoForm est pas null ET photoBDD est null
//OU
//Si photoForm est pas null ET photoBDD est pas null
if ((!empty($form['photo2']->getData()) && empty($photo2)) || (!empty($form['photo2']->getData()) && !empty($photo2))) {
//On garde celle du formulaire
$newModele->setPhoto2(base64_encode(file_get_contents($form['photo2']->getData())));
//Si photoForm est null ET photoBDD est pas null
} else if (empty($form['photo2']->getData() && !empty($photo2))) {
//Si l'utilisateur a supprimé une image
if ($_POST['isPhoto2'] == "deleted") {
//La photo reste vide
$newModele->setPhoto2(null);
//Si l'utilisateur n'a changé d'image
} else if ($_POST['isPhoto2'] == "notChanged") {
//On garde photoBDD
$newModele->setPhoto2($photo2);
} else if($_POST['isPhoto2'] == "changed") {
$newModele->setPhoto2(base64_encode(file_get_contents($form['photo2']->getData())));
}
//Si les 2 sont null
} else {
//La photo reste vide
$modele->setPhoto2(null);
}
//Conditions d'ajout des photos dans la BDD à partir du formulaire
//Si photoForm est pas null ET photoBDD est null
//OU
//Si photoForm est pas null ET photoBDD est pas null
if ((!empty($form['photo3']->getData()) && empty($photo3)) || (!empty($form['photo3']->getData()) && !empty($photo3))) {
//On garde celle du formulaire
$newModele->setPhoto3(base64_encode(file_get_contents($form['photo3']->getData())));
//Si photoForm est null ET photoBDD est pas null
} else if (empty($form['photo3']->getData() && !empty($photo3))) {
//Si l'utilisateur a supprimé une image
if ($_POST['isPhoto3'] == "deleted") {
//La photo reste vide
$newModele->setPhoto3(null);
//Si l'utilisateur n'a changé d'image
} else if ($_POST['isPhoto3'] == "notChanged") {
//On garde photoBDD
$newModele->setPhoto3($photo3);
} else if($_POST['isPhoto3'] == "changed") {
$newModele->setPhoto3(base64_encode(file_get_contents($form['photo3']->getData())));
}
//Si les 2 sont null
} else {
//La photo reste vide
$newModele->setPhoto3(null);
}
$newModele = new Modele();
$newModele = $form->getData();
$entityManager->persist($newModele);
$entityManager->flush();
return $this->redirectToRoute('modeles');
}
return $this->render('modeles/dupliquer_modele.html.twig', [
'form' => $form->createView(),
'modele' => $modele,
]);
}
/**
* Affiche les détails d'un modèle via son ID passé en paramètre
* @Route("/modeles/details_modele/{id_modele}", name="details_modele")
*/
public function detailsModele(int $id_modele, ModeleRepository $modeleRepository)
{
$modele = $modeleRepository->find($id_modele);
$form = $this->createForm(ModeleType::class, $modele);
return $this->render('modeles/details_modele.html.twig', [
'form' => $form->createView(),
'modele' => $modele,
]);
}
/**
* Archive un modèle
* @Route("/modeles/archiver/{id_modele}", name="archiver_modele")
*/
public function archiver(int $id_modele)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN'); // restreindre l'accès à l'action archiver si l'utilisateur n'a pas le role Admin.
$entityManager = $this->getDoctrine()->getManager();
$modeleRepository = $this->getDoctrine()->getRepository(Modele::class);
$modele = $modeleRepository->find($id_modele)->setIsArchive(true);
$entityManager->persist($modele);
$entityManager->flush();
return $this->redirectToRoute('modeles');
}
/**
* Active un modèle archivé
* @Route("/modeles/activer/{id_modele}", name="activer_modele")
*/
public function activer(int $id_modele, ModeleRepository $modeleRepository)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN'); // restreindre l'accès à l'action activer si l'utilisateur n'a pas le role Admin.
$entityManager = $this->getDoctrine()->getManager();
$modele = $modeleRepository->find($id_modele)->setIsArchive(false);
$entityManager->persist($modele);
$entityManager->flush();
return $this->redirectToRoute('modeles');
}
}