src/Controller/Admin/OffreEmploiController.php line 27

  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\OffreEmploi;
  4. use App\Form\OffreEmploiType;
  5. use App\Repository\OffreEmploiRepository;
  6. use App\Services\Uploads\Upload;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\String\Slugger\SluggerInterface;
  12. use Ttskch\PaginatorBundle\Context;
  13. use Ttskch\PaginatorBundle\Doctrine\Counter;
  14. use Ttskch\PaginatorBundle\Doctrine\Slicer;
  15. #[Route('/admin/offres/emploi')]
  16. class OffreEmploiController extends AbstractController
  17. {
  18.     public function __construct(
  19.         private Upload $upload,
  20.     ) {
  21.     }
  22.     #[Route('/'name'app_offre_index_back'methods: ['GET'])]
  23.     public function index(OffreEmploiRepository $offreEmploiRepositoryContext $context): Response
  24.     {
  25.         $qb $offreEmploiRepository->createQueryBuilder('p');
  26.         $context->initialize('id', new Slicer($qb), new Counter($qb));
  27.         return $this->render('admin/post_type/offre_emploi/index.html.twig', [
  28.             'offres' => $context->slice,
  29.         ]);
  30.     }
  31.     #[Route('/nouvelle'name'app_offre_new'methods: ['GET''POST'])]
  32.     public function new(Request $requestOffreEmploiRepository $offreEmploiRepositorySluggerInterface $slugger): Response
  33.     {
  34.         $offreEmploi = new OffreEmploi();
  35.         $form $this->createForm(OffreEmploiType::class, $offreEmploi);
  36.         $form->handleRequest($request);
  37.         if ($form->isSubmitted() && $form->isValid()) {
  38.             $offreEmploi->setCreatedAt(new \DateTime('now'))
  39.                 ->setUpdatedAt(new \DateTime('now'));
  40.             $this->upload->uploadImage($form$offreEmploi'logo'$slugger$data null);
  41.             $offreEmploiRepository->add($offreEmploitrue);
  42.             return $this->redirectToRoute('app_offre_index_back', [], Response::HTTP_SEE_OTHER);
  43.         }
  44.         return $this->renderForm('admin/post_type/offre_emploi/offre.html.twig', [
  45.             'offre' => $offreEmploi,
  46.             'form' => $form,
  47.             'disabled' => true,
  48.         ]);
  49.     }
  50.     #[Route('/{offreEmploi}/voir'name'app_offre_show'methods: ['GET'])]
  51.     public function show(OffreEmploi $offreEmploi): Response
  52.     {
  53.         if ($offreEmploi->getSlug()) {
  54.             return $this->redirectToRoute('app_offre_emploi_detail_slug',
  55.                 [
  56.                     'slug' => $offreEmploi->getSlug(),
  57.                 ]
  58.             );
  59.         }
  60.         return $this->redirectToRoute('app_offre_emploi_detail',
  61.             [
  62.                 'offreEmploi' => $offreEmploi->getId(),
  63.             ]
  64.         );
  65.     }
  66.     #[Route('/{id}/edition'name'app_offre_edit'methods: ['GET''POST'])]
  67.     public function edit(Request $requestOffreEmploi $offreEmploiOffreEmploiRepository $offreEmploiRepositorySluggerInterface $slugger): Response
  68.     {
  69.         $form $this->createForm(OffreEmploiType::class, $offreEmploi);
  70.         $form->handleRequest($request);
  71.         if ($form->isSubmitted() && $form->isValid()) {
  72.             $this->upload->editImage($form$offreEmploi'logo'$slugger$data null);
  73.             $offreEmploiRepository->add($offreEmploitrue);
  74.             return $this->redirectToRoute('app_offre_index_back', [], Response::HTTP_SEE_OTHER);
  75.         }
  76.         return $this->renderForm('admin/post_type/offre_emploi/offre.html.twig', [
  77.             'offre' => $offreEmploi,
  78.             'form' => $form,
  79.             'disabled' => false,
  80.         ]);
  81.     }
  82.     // #[Route('/formations/media/{id}', name : 'app_offre_filepath')]
  83.     // public function mediaFormation(
  84.     //     $id,
  85.     //     OffreEmploiRepository $offreEmploiRepository
  86.     // ): Response {
  87.     //     $item = $offreEmploiRepository->findOneBy(['id' => $id]);
  88.     //     $media = $item->getLogo();
  89.     //     return new Response('/uploads/medias/'.$media);
  90.     // }
  91.     #[Route('/delete/{id}'name'app_offre_delete'methods: ['POST'])]
  92.     public function delete(Request $requestOffreEmploi $offreOffreEmploiRepository $offreRepository): Response
  93.     {
  94.         if ($this->isCsrfTokenValid('delete'.$offre->getId(), $request->request->get('_token'))) {
  95.             $offreRepository->remove($offretrue);
  96.         }
  97.         return $this->redirectToRoute('app_offre_index_back', [], Response::HTTP_SEE_OTHER);
  98.     }
  99. }