<?php
namespace App\Controller;
use App\Entity\Service;
use App\Entity\User;
use App\Form\ServiceType;
use App\Form\UserType;
use App\Repository\ServiceRepository;
use App\Repository\UserRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/user")
*/
class UserController extends AbstractController
{
/**
* @Route("/new", name="app_user_new", methods={"GET", "POST"})
*/
public function new(Request $request, EntityManagerInterface $em): Response
{
$user = new User();
// Services dynamiques venant d'une base ou définis ici
$services = ['Plomb', 'DPE', 'Amiante','Gaz','Electricite','Pack location','Pack vente']; // ou $em->getRepository(Service::class)->findAll() si tu veux depuis DB
// Ajouter les services fixes
foreach ( $services as $nom) {
$service = new Service();
$service->setNom($nom);
$service->setUser($user);
$user->getServices()->add($service);
$em->persist($service);
}
$form = $this->createForm(UserType::class, $user, [
'available_services' => $services,
]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em->persist($user);
$em->flush();
return $this->redirectToRoute('message_route', [
'message' => 'Félicitations 🎉 votre demande a été enregistré'
]);
}
return $this->render('home/user_new.html.twig', [
'form' => $form->createView(),
]);
}
// /**
// * @Route("/new", name="app_service_new", methods={"GET", "POST"})
// */
// public function new(Request $request, ServiceRepository $serviceRepository): Response
// {
// $service = new Service();
// $form = $this->createForm(ServiceType::class, $service);
// $form->handleRequest($request);
// if ($form->isSubmitted() && $form->isValid()) {
// $serviceRepository->add($service, true);
// return $this->redirectToRoute('app_service_index', [], Response::HTTP_SEE_OTHER);
// }
// return $this->renderForm('service/new.html.twig', [
// 'service' => $service,
// 'form' => $form,
// ]);
// }
/**
* @Route("/{id}", name="app_service_show", methods={"GET"})
*/
public function show(Service $service): Response
{
return $this->render('service/show.html.twig', [
'service' => $service,
]);
}
/**
* @Route("/{id}/edit", name="app_service_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, Service $service, ServiceRepository $serviceRepository): Response
{
$form = $this->createForm(ServiceType::class, $service);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$serviceRepository->add($service, true);
return $this->redirectToRoute('app_service_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('service/edit.html.twig', [
'service' => $service,
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_service_delete", methods={"POST"})
*/
public function delete(Request $request, Service $service, ServiceRepository $serviceRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$service->getId(), $request->request->get('_token'))) {
$serviceRepository->remove($service, true);
}
return $this->redirectToRoute('app_service_index', [], Response::HTTP_SEE_OTHER);
}
}