src/Controller/App/ServiceController.php line 89

  1. <?php
  2. namespace App\Controller\App;
  3. use App\Entity\Service;
  4. use App\Form\ServiceType;
  5. use App\Repository\ServiceRepository;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\Serializer\SerializerInterface;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. #[Route('/app/service')]
  15. class ServiceController extends AbstractController
  16. {
  17.     public function __construct(private TranslatorInterface $translator)
  18.     {
  19.     }
  20.     #[Route('/'name'app_service_index'methods: ['GET''POST'])]
  21.     public function index(Request $requestServiceRepository $serviceRepository): Response
  22.     {
  23.         if ($request->isXmlHttpRequest()) {
  24.             if ($this->isCsrfTokenValid('service'$_POST['service']['_token'])) {
  25.                 $service = new Service();
  26.                 $form $this->createForm(ServiceType::class, $service);
  27.                 $service
  28.                     ->setName($_POST['service']['name'])
  29.                     ->setDescription($_POST['service']['description'])
  30.                     ->setPrice($_POST['service']['price'])
  31.                     ->setDuration(intval($_POST['service']['duration']));
  32.                 $serviceRepository->add($servicetrue);
  33.                 return new JsonResponse(['status' => 'ok''data' => $service->getId(), 'msg' => $this->translator->trans('Service crée !!')]);
  34.             } else {
  35.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  36.             }
  37.         }
  38.         $service = new Service();
  39.         $form $this->createForm(ServiceType::class, $service);
  40.         $edit_form $this->createForm(ServiceType::class, $service, [
  41.             'action' => $this->generateUrl('app_service_edit_ajax', ['id' => '1']),
  42.             'method' => 'POST',
  43.             'attr' => ['name' => 'service_type_edit']
  44.         ]);
  45.         return $this->render('app/service/index.html.twig', [
  46.             'services' => $serviceRepository->findAll(),
  47.             'form' => $form->createView(),
  48.             'edit_form' => $edit_form->createView()
  49.         ]);
  50.     }
  51.     #[Route('/new'name'app_service_new'methods: ['GET''POST'])]
  52.     public function new(Request $requestServiceRepository $serviceRepository): Response
  53.     {
  54.         $service = new Service();
  55.         $form $this->createForm(ServiceType::class, $service);
  56.         $form->handleRequest($request);
  57.         if ($form->isSubmitted() && $form->isValid()) {
  58.             $serviceRepository->add($servicetrue);
  59.             $this->addFlash('success'$this->translator->trans('Succès !!'));
  60.             return $this->redirectToRoute('app_service_index', [], Response::HTTP_SEE_OTHER);
  61.         }
  62.         return $this->renderForm('app/service/new.html.twig', [
  63.             'service' => $service,
  64.             'form' => $form,
  65.         ]);
  66.     }
  67.     #[Route('/{id}'name'app_service_show'methods: ['GET'])]
  68.     public function show(Service $service): Response
  69.     {
  70.         return $this->render('app/service/show.html.twig', [
  71.             'service' => $service,
  72.         ]);
  73.     }
  74.     #[Route('/ajax/{id}'name'app_service_show_ajax'methods: ['GET'])]
  75.     public function show_ajax(Service $serviceSerializerInterface $serializer): Response
  76.     {
  77.         $json $serializer->serialize($service'json', ['groups' => ['read:service:basic']]);
  78.         return $this->json(json_decode($json));
  79.     }
  80.     #[Route('/{id}/edit'name'app_service_edit'methods: ['GET''POST'])]
  81.     public function edit(Request $requestService $serviceServiceRepository $serviceRepository): Response
  82.     {
  83.         $form $this->createForm(ServiceType::class, $service);
  84.         $form->handleRequest($request);
  85.         if ($form->isSubmitted() && $form->isValid()) {
  86.             $serviceRepository->add($servicetrue);
  87.             $this->addFlash('success'$this->translator->trans('Succès !!'));
  88.             return $this->redirectToRoute('app_service_index', [], Response::HTTP_SEE_OTHER);
  89.         }
  90.         return $this->renderForm('app/service/edit.html.twig', [
  91.             'service' => $service,
  92.             'form' => $form,
  93.         ]);
  94.     }
  95.     #[Route('/{id?}/edit/ajax'name'app_service_edit_ajax'methods: ['GET''POST'])]
  96.     public function edit_ajax(Request $requestService $serviceServiceRepository $serviceRepositoryEntityManagerInterface $manager): Response
  97.     {
  98.         if ($request->isXmlHttpRequest()) {
  99.             if ($this->isCsrfTokenValid('edit_service'$_POST['service']['_token'])) {
  100.                 $service
  101.                     ->setName($_POST['service']['name'])
  102.                     ->setDescription($_POST['service']['description'])
  103.                     ->setPrice($_POST['service']['price'])
  104.                     ->setDuration(intval($_POST['service']['duration']))
  105.                 ;
  106.                 $serviceRepository->add($servicetrue);
  107.                 return new JsonResponse(['status' => 'ok''data' => $service->getId(), 'msg' => $this->translator->trans('Service mis à jour !!')]);
  108.             } else {
  109.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  110.             }
  111.         }
  112.     }
  113.     #[Route('/{id}'name'app_service_delete'methods: ['POST'])]
  114.     public function delete(Request $requestService $serviceServiceRepository $serviceRepository): Response
  115.     {
  116.         if ($this->isCsrfTokenValid('delete' $service->getId(), $request->request->get('_token'))) {
  117.             try {
  118.                 $serviceRepository->remove($servicetrue);
  119.                 $this->addFlash('success'$this->translator->trans('Succès !!'));
  120.             } catch (\Exception $e) {
  121.                 $errorMessage $e->getMessage();
  122.                 $result explode(':'$errorMessage);
  123.                 $this->addFlash('error'$result[0]);
  124.             }
  125.         }
  126.         return $this->redirectToRoute('app_service_index', [], Response::HTTP_SEE_OTHER);
  127.     }
  128. }