src/Controller/OrganisationController.php line 17
<?php
namespace App\Controller;
use App\Entity\Organisation;
use App\Form\OrganisationType;
use App\Repository\OrganisationRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/organisation')]
class OrganisationController extends AbstractController
{
#[Route('/', name: 'app_organisation_index', methods: ['GET'])]
public function index(OrganisationRepository $organisationRepository): Response
{
return $this->render('organisation/index.html.twig', [
'organisations' => $organisationRepository->findAll(),
]);
}
#[Route('/new', name: 'app_organisation_new', methods: ['GET', 'POST'])]
public function new(Request $request, OrganisationRepository $organisationRepository): Response
{
$organisation = new Organisation();
$form = $this->createForm(OrganisationType::class, $organisation);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$r = $form->get("parent_autocomplete")->getData();
$parent = $organisationRepository->findOneBy(["id"=>$r["val"]??-1]);
$organisation->setParent($parent && $r["txt"]==$parent->getLibelle()?$parent:null);
$organisationRepository->save($organisation, true);
return $this->redirectToRoute('app_organisation_edit', ["id"=>$organisation->getId()], Response::HTTP_SEE_OTHER);
}
return $this->render('organisation/new.html.twig', [
'organisation' => $organisation,
'form' => $form->createView(),
]);
}
#[Route('/{id}', name: 'app_organisation_show', methods: ['GET'])]
public function show(Organisation $organisation): Response
{
return $this->render('organisation/show.html.twig', [
'organisation' => $organisation,
]);
}
#[Route('/{id}/edit', name: 'app_organisation_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, Organisation $organisation, OrganisationRepository $organisationRepository): Response
{
$form = $this->createForm(OrganisationType::class, $organisation);
if($organisation->getParent()!=null){
$parent=[
"val"=>$organisation->getParent()->getId(),
"txt"=>$organisation->getParent()->getLibelle(),
];
$form->get("parent_autocomplete")->setData($parent);
}
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$r = $form->get("parent_autocomplete")->getData();
$parent = $organisationRepository->findOneBy(["id"=>$r["val"]??-1]);
$organisation->setParent($parent && $r["txt"]==$parent->getLibelle()?$parent:null);
$organisationRepository->save($organisation, true);
return $this->redirectToRoute('app_organisation_show', ["id"=>$organisation->getId()], Response::HTTP_SEE_OTHER);
}
return $this->render('organisation/edit.html.twig', [
'organisation' => $organisation,
'form' => $form->createView(),
]);
}
#[Route('/{id}', name: 'app_organisation_delete', methods: ['POST'])]
public function delete(Request $request, Organisation $organisation, OrganisationRepository $organisationRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$organisation->getId(), $request->request->get('_token'))) {
$organisationRepository->remove($organisation, true);
}
return $this->redirectToRoute('app_organisation_index', [], Response::HTTP_SEE_OTHER);
}
}