src/Controller/App/ColleagueController.php line 27

  1. <?php
  2. namespace App\Controller\App;
  3. use App\Entity\Colleague;
  4. use App\Form\ColleagueBasicType;
  5. use App\Form\ColleagueSocialMediasType;
  6. use App\Service\FileUploader;
  7. use App\Repository\ColleagueRepository;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\Serializer\SerializerInterface;
  14. use Symfony\Contracts\Translation\TranslatorInterface;
  15. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  16. #[Route('/app/colleague')]
  17. class ColleagueController extends AbstractController
  18. {
  19.     public function __construct(private TranslatorInterface $translator)
  20.     {
  21.     }
  22.     #[Route('/'name'app_colleague_index'methods: ['GET''POST'])]
  23.     public function index(Request $requestColleagueRepository $colleagueRepositoryFileUploader $fileUploader): Response
  24.     {
  25.         if ($request->isXmlHttpRequest()) {
  26.             if ($this->isCsrfTokenValid('colleague_basic'$_POST['colleague_basic']['_token'])) {
  27.                 $colleague = new Colleague();
  28.                 $form $this->createForm(ColleagueBasicType::class, $colleague);
  29.                 $colleague
  30.                     ->setFirstName($_POST['colleague_basic']['first_name'])
  31.                     ->setLastName($_POST['colleague_basic']['last_name'])
  32.                     ->setEmail($_POST['colleague_basic']['email'])
  33.                     ->setJob($_POST['colleague_basic']['job'])
  34.                     ->setPhone($_POST['colleague_basic']['phone'])
  35.                     ->setMobile($_POST['colleague_basic']['mobile']);
  36.                 $form->handleRequest($request);
  37.                 $photo $form->get('photo')->getData();
  38.                 if ($photo) {
  39.                     $uploadedFileName $fileUploader->upload($photo'colleagues_dir');
  40.                     $colleague->setPhoto($uploadedFileName);
  41.                 }
  42.                 $colleagueRepository->add($colleaguetrue);
  43.                 return new JsonResponse(['status' => 'ok''data' => $colleague->getId(), 'msg' => $this->translator->trans('Collègue créé !')]);
  44.             } else {
  45.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  46.             }
  47.         }
  48.         $colleague = new Colleague();
  49.         $form $this->createForm(ColleagueBasicType::class, $colleague);
  50.         $edit_form $this->createForm(ColleagueBasicType::class, $colleague, [
  51.             'action' => $this->generateUrl('app_colleague_edit_ajax', ['id' => '1']),
  52.             'method' => 'POST',
  53.             'attr' => ['name' => 'colleague_type_edit']
  54.         ]);
  55.         return $this->render('app/colleague/index.html.twig', [
  56.             'colleagues' => $colleagueRepository->findAll(),
  57.             'form' => $form->createView(),
  58.             'edit_form' => $edit_form->createView()
  59.         ]);
  60.     }
  61.     #[Route('/new'name'app_colleague_new'methods: ['GET''POST'])]
  62.     public function new(Request $requestColleagueRepository $colleagueRepositoryFileUploader $fileUploader): Response
  63.     {
  64.         return $this->redirectToRoute('app_colleague_index', [], Response::HTTP_SEE_OTHER);
  65.         // $colleague = new Colleague();
  66.         // $form = $this->createForm(ColleagueBasicType::class, $colleague);
  67.         // $form->handleRequest($request);
  68.         // if ($form->isSubmitted() && $form->isValid()) {
  69.         //     $photo = $form->get('photo')->getData();
  70.         //     if ($photo) {
  71.         //         $uploadedFileName = $fileUploader->upload($photo, 'colleagues_dir');
  72.         //         $colleague->setPhoto($uploadedFileName);
  73.         //     }
  74.         //     $colleagueRepository->add($colleague, true);
  75.         //     $this->addFlash('success', $this->translator->trans('Succès !!'));
  76.         //     return $this->redirectToRoute('app_colleague_index', [], Response::HTTP_SEE_OTHER);
  77.         // }
  78.         // return $this->renderForm('app/colleague/new.html.twig', [
  79.         //     'colleague' => $colleague,
  80.         //     'form' => $form,
  81.         // ]);
  82.     }
  83.     #[Route('/{id}'name'app_colleague_show'methods: ['GET'])]
  84.     public function show(Colleague $colleague): Response
  85.     {
  86.         return $this->redirectToRoute('app_colleague_index', [], Response::HTTP_SEE_OTHER);
  87.         // return $this->render('app/colleague/show.html.twig', [
  88.         //     'colleague' => $colleague,
  89.         // ]);
  90.     }
  91.     #[Route('/ajax/{id}'name'app_colleague_show_ajax'methods: ['GET'])]
  92.     public function show_ajax(Colleague $colleagueSerializerInterface $serializer): Response
  93.     {
  94.         $json $serializer->serialize($colleague'json', ['groups' => ['read:colleague:basic']]);
  95.         return $this->json(json_decode($json));
  96.     }
  97.     #[Route('/{id}/edit'name'app_colleague_edit'methods: ['GET''POST'])]
  98.     public function edit(Request $requestColleague $colleagueColleagueRepository $colleagueRepositoryFileUploader $fileUploader): Response
  99.     {
  100.         $form $this->createForm(ColleagueBasicType::class, $colleague);
  101.         $form->handleRequest($request);
  102.         $formsm $this->createForm(ColleagueSocialMediasType::class, $colleague);
  103.         $formsm->handleRequest($request);
  104.         if ($form->isSubmitted() && $form->isValid()) {
  105.             $photo $form->get('photo')->getData();
  106.             if ($photo) {
  107.                 $uploadedFileName $fileUploader->upload($photo'colleagues_dir');
  108.                 $colleague->setPhoto($uploadedFileName);
  109.             }
  110.             $colleagueRepository->add($colleaguetrue);
  111.             $this->addFlash('success'$this->translator->trans('Succès !!'));
  112.             return $this->redirectToRoute('app_colleague_edit', ['id' => $colleague->getId()], Response::HTTP_SEE_OTHER);
  113.         }
  114.         if ($formsm->isSubmitted() && $formsm->isValid()) {
  115.             $colleagueRepository->add($colleaguetrue);
  116.             $this->addFlash('success'$this->translator->trans('Succès !!'));
  117.             return $this->redirectToRoute('app_colleague_edit', ['id' => $colleague->getId()], Response::HTTP_SEE_OTHER);
  118.         }
  119.         return $this->renderForm('app/colleague/edit.html.twig', [
  120.             'colleague' => $colleague,
  121.             'form' => $form,
  122.             'formsm' => $formsm,
  123.         ]);
  124.     }
  125.     #[Route('/{id?}/edit/ajax'name'app_colleague_edit_ajax'methods: ['GET''POST'])]
  126.     public function edit_ajax(Request $requestColleague $colleagueColleagueRepository $colleagueRepositoryFileUploader $fileUploaderEntityManagerInterface $manager): Response
  127.     {
  128.         if ($request->isXmlHttpRequest()) {
  129.             if ($this->isCsrfTokenValid('edit_colleague_basic'$_POST['colleague_basic']['_token'])) {
  130.                 $form $this->createForm(ColleagueBasicType::class, $colleague);
  131.                 $colleague
  132.                     ->setFirstName($_POST['colleague_basic']['first_name'])
  133.                     ->setLastName($_POST['colleague_basic']['last_name'])
  134.                     ->setJob($_POST['colleague_basic']['job'])
  135.                     ->setEmail($_POST['colleague_basic']['email'])
  136.                     ->setPhone($_POST['colleague_basic']['phone'])
  137.                     ->setMobile($_POST['colleague_basic']['mobile'])
  138.                 ;
  139.                 $form->handleRequest($request);
  140.                 $photo $form->get('photo')->getData();
  141.                 if ($photo) {
  142.                     $uploadedFileName $fileUploader->upload($photo'colleagues_dir');
  143.                     $colleague->setPhoto($uploadedFileName);
  144.                 }
  145.                 $colleagueRepository->add($colleaguetrue);
  146.                 return new JsonResponse(['status' => 'ok''data' => $colleague->getId(), 'msg' => $this->translator->trans('Collègue mis à jour !')]);
  147.             } else {
  148.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  149.             }
  150.         }
  151.     }
  152.     #[Route('/{id}'name'app_colleague_delete'methods: ['POST'])]
  153.     public function delete(Request $requestColleague $colleagueColleagueRepository $colleagueRepository): Response
  154.     {
  155.         if ($this->isCsrfTokenValid('delete' $colleague->getId(), $request->request->get('_token'))) {
  156.             try {
  157.                 $colleagueRepository->remove($colleaguetrue);
  158.                 $this->addFlash('success'$this->translator->trans('Succès !!'));
  159.             } catch (\Exception $e) {
  160.                 $errorMessage $e->getMessage();
  161.                 $result explode(':'$errorMessage);
  162.                 $this->addFlash('error'$result[0]);
  163.             }
  164.         }
  165.         return $this->redirectToRoute('app_colleague_index', [], Response::HTTP_SEE_OTHER);
  166.     }
  167. }