src/Controller/OffreController.php line 297

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\MembreRepository;
  4. use DateTimeImmutable;
  5. use App\Entity\Offre;
  6. use App\Form\OffreType;
  7. use App\Repository\OffreRepository;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Knp\Component\Pager\PaginatorInterface;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  16. use App\Entity\Membre;
  17. class OffreController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/dashboard/offre", name="offre_index", methods={"GET"})
  21.      * @Security("is_granted('ROLE_ADMINISTRATEUR') or is_granted('ROLE_MEMBRE')")
  22.      */
  23.     public function index(OffreRepository $offreRepositoryPaginatorInterface $paginator,Request $request): Response
  24.     {
  25.         $this->denyAccessUnlessGranted('IS_AUTHENTICATED_REMEMBERED');
  26.         $date=null;
  27.         $intituleOffre null;
  28.         $offres $offreRepository->findBy(["isDeleted" => 0], ['id' => 'desc']);
  29.         return $this->render('offre/index.html.twig', [
  30.             'intituleOffreFilter'=>$intituleOffre,
  31.             'offres' =>$offres,
  32.             'dateFilter' => $date,
  33.         ]);
  34.     }
  35.     /**
  36.      * @Route("/dashboard/offre/filter/date", name="offre_filter_date", methods={"GET","POST"})
  37.      * @Security("is_granted('ROLE_ADMINISTRATEUR')")
  38.      */
  39.     public function filtredByDate(OffreRepository $offresRepositoryRequest $requestPaginatorInterface $paginator): Response
  40.     {
  41.         $intituleOffre=null;
  42.         $date_filtre $request->request->get('date');
  43.         $date = new DateTimeImmutable($date_filtre);
  44.         if ($date == null) {
  45.             $date='';
  46.         }
  47.          $offres $offresRepository->findByDate($date);
  48.          $pagination $paginator->paginate(
  49.              $offres/* query NOT result */
  50.              $request->query->getInt('page'1), /*page number*/
  51.              /*limit per page*/
  52.          );
  53.          return $this->render('offre/index.html.twig', [
  54.              'title' => 'Offres',
  55.              'offres' => $pagination,
  56.              'dateFilter' => $date_filtre,
  57.              'intituleOffreFilter' => $intituleOffre,
  58.         ]);
  59.         
  60.     }
  61.     /**
  62.      * @Route("/dashboard/offre/new", name="offre_new", methods={"GET","POST"})
  63.      * @Security("is_granted('ROLE_ADMINISTRATEUR')")
  64.      */
  65.     public function newOffre(MembreRepository $membreRepositoryRequest $requestEntityManagerInterface $manager): Response
  66.     {           
  67.         //$destination = $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  68.         $members=$membreRepository->findBy(["isDeleted"=>false]);
  69.         $offre = new Offre();
  70.         $form $this->createForm(OffreType::class, $offre);
  71.         $form->handleRequest($request);
  72.         if ($request->isMethod('post')) {
  73.             $intituleOffre $request->request->get("titleOffre");
  74.             $offre->setIntituleOffre($intituleOffre);
  75.             $titleOffre $request->request->get("intituleOffre");
  76.             $offre->setTitleOffre($titleOffre);
  77.             $autreContact $request->request->get("autreContactOffre");
  78.             $offre->setAutreContact($autreContact);
  79.             $offre->setDate(new DateTimeImmutable());
  80.             $offre->setDateOffre(new DateTimeImmutable($request->request->get("dateOffre")));
  81.             $offre->setTime(new DateTimeImmutable());
  82.             $contactMem $request->request->get("contactOffre");
  83.             $mem $membreRepository->findOneBy(["id" => $contactMem]);
  84.             $offre->setContactmem($mem);
  85.            //$image = $request->files->get('image');
  86.            //$image_name = "Offre" . '-' . uniqid() . '.' . $image->guessExtension();
  87.             /*$image->move(
  88.                 $destination,
  89.                 $image_name
  90.             );
  91.             $offre->setImage($image_name);
  92.             $piece = $request->files->get('pieceJoindre');
  93.             if ($piece != null){
  94.             $piece_name = "doc" . '-' . uniqid() . '.' . $piece->guessExtension();
  95.             $piece->move(
  96.                 $destination,
  97.                 $piece_name
  98.             );
  99.             $offre->setPieceJoindre($piece_name);}*/
  100.             $manager->persist($offre);
  101.             $manager->flush();
  102.             return $this->redirectToRoute('offre_index', [], Response::HTTP_SEE_OTHER);
  103.         }
  104.         return $this->render('offre/new.html.twig', [
  105.             'title'=>'Offre',
  106.             'offre' => $offre,
  107.             'members'=>$members,
  108.             'form' => $form->createView()
  109.         ]);
  110.     }
  111.     /**
  112.      * @Route("/dashboard/offre/{id}/edit", name="offre_edit", methods={"GET","POST"})
  113.      * @Security("is_granted('ROLE_ADMINISTRATEUR')")
  114.      */
  115.     public function edit(MembreRepository $membreRepositoryRequest $requestOffre $offreEntityManagerInterface $manager): Response
  116.     {
  117.         //$destination = $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  118.         $form $this->createForm(OffreType::class, $offre);
  119.         $form->handleRequest($request);
  120.         $members=$membreRepository->findBy(["isDeleted"=>false]);
  121.         if ($request->isMethod('post')) {
  122.             $intituleOffre $request->request->get("titleOffre");
  123.             $offre->setIntituleOffre($intituleOffre);
  124.             $titleOffre $request->request->get("intituleOffre");
  125.             $offre->setTitleOffre($titleOffre);
  126.             $autreContact $request->request->get("autreContactOffre");
  127.             $offre->setAutreContact($autreContact);
  128.             $offre->setDate(new DateTimeImmutable());
  129.             $offre->setDateOffre(new DateTimeImmutable($request->request->get("dateOffre")));
  130.             $offre->setTime(new DateTimeImmutable());
  131.             $contactMem $request->request->get("contactOffre");
  132.             $mem $membreRepository->findOneBy(["id" => $contactMem]);
  133.             $offre->setContactmem($mem);
  134.             /*
  135.             if($request->files->get('image')!=null){
  136.                 $image = $request->files->get('image');
  137.                 $image_name = "Offre" . '-' . uniqid() . '.' . $image->guessExtension();
  138.                 $image->move(
  139.                     $destination,
  140.                     $image_name
  141.                 );
  142.                 $offre->setImage($image_name);
  143.             }
  144.             if($request->files->get('pieceJoindre')!=null){
  145.                 $piece = $request->files->get('pieceJoindre');
  146.                 $piece_name = "doc" . '-' . uniqid() . '.' . $piece->guessExtension();
  147.                 $piece->move(
  148.                     $destination,
  149.                     $piece_name
  150.                 );
  151.                 $offre->setPieceJoindre($piece_name);
  152.             }*/
  153.             $manager->flush();
  154.             return $this->redirectToRoute('offre_index', [], Response::HTTP_SEE_OTHER);
  155.         }
  156.         return $this->render('offre/edit.html.twig', [
  157.             "title"=>"Offre",
  158.             'offre' => $offre,
  159.              'members'=>$members,
  160.             'form' => $form->createView(),
  161.         ]);
  162.     }
  163.     /**
  164.      * @Route("/dashboard/offre/filter", name="offre_filter_intituleOffre", methods={"GET","POST"})
  165.      * @Security("is_granted('ROLE_ADMINISTRATEUR')")
  166.      */
  167.     public function filtredByIntituleOffre(OffreRepository $offreRepositoryRequest $requestPaginatorInterface $paginator): Response
  168.     {
  169.         $date=null;
  170.         $intituleOffre $request->request->get('intituleOffre');
  171.         if ($intituleOffre == null) {
  172.            $intituleOffre='';
  173.         }
  174.         $offres $offreRepository->findByIntituleOffre($intituleOffre);
  175.         return $this->render('offre/index.html.twig', [
  176.             'intituleOffreFilter' => $intituleOffre,
  177.             'offres' => $offres,
  178.             'dateFilter' => $date
  179.         ]);
  180.     }
  181.     /**
  182.      * @Route("/dashboard/offre/show/filter", name="offre_filter_intituleOffre_show", methods={"GET","POST"})
  183.      */
  184.     public function filtredByIntituleOffreShow(OffreRepository $offreRepositoryRequest $requestPaginatorInterface $paginator): Response
  185.     {
  186.         $date=null;
  187.         $intituleOffre $request->request->get('intituleOffre');
  188.         if ($intituleOffre == null) {
  189.            $intituleOffre='';
  190.         }
  191.         $offres $offreRepository->findByTitleOffre($intituleOffre);
  192.         $pagination $paginator->paginate(
  193.             $offres/* query NOT result */
  194.             $request->query->getInt('page'1), /*page number*/
  195.             /*limit per page*/
  196.         );
  197.         return $this->render('offre/offres.html.twig', [
  198.             'intituleOffreFilter' => $intituleOffre,
  199.             'offres' => $pagination,
  200.             'dateFilter' => $date
  201.         ]);
  202.     }
  203.     /**
  204.      * @Route("/dashboard/offre/show/filter/date", name="offre_filter_date_show", methods={"GET","POST"})
  205.      * @Security("is_granted('ROLE_ADMINISTRATEUR')")
  206.      */
  207.     public function filtredByDateShow(OffreRepository $offresRepositoryRequest $requestPaginatorInterface $paginator): Response
  208.     {
  209.         $intituleOffre=null;
  210.         $date_filtre $request->request->get('date');
  211.         $date = new DateTimeImmutable($date_filtre);
  212.         if ($date == null) {
  213.             $date='';
  214.         }
  215.          $offres $offresRepository->findByDate($date);
  216.          $pagination $paginator->paginate(
  217.              $offres/* query NOT result */
  218.              $request->query->getInt('page'1), /*page number*/
  219.              /*limit per page*/
  220.          );
  221.          return $this->render('offre/offres.html.twig', [
  222.              'title' => 'Offres',
  223.              'offres' => $pagination,
  224.              'dateFilter' => $date_filtre,
  225.              'intituleOffreFilter' => $intituleOffre,
  226.         ]);
  227.         
  228.     }
  229.     /**
  230.      * @Route("/dashboard/offre/{id}", name="offre_delete", methods={"POST"})
  231.      * @Security("is_granted('ROLE_ADMINISTRATEUR')")
  232.      */
  233.     public function delete(Request $requestOffre $offreEntityManagerInterface $manager): Response
  234.     {
  235.         if ($this->isCsrfTokenValid('delete'.$offre->getId(), $request->request->get('_token'))) {
  236.             $offre->setIsDeleted(1);
  237.             $manager->flush();
  238.         }
  239.         return $this->redirectToRoute('offre_index', [], Response::HTTP_SEE_OTHER);
  240.     }
  241.     /**
  242.      * @Route("/dashboard/offre/show", name="offre_old_show")
  243.      * @Security("is_granted('ROLE_ADMINISTRATEUR')")
  244.      */
  245.     public function oldShow(OffreRepository $repo PaginatorInterface $paginator,Request $request): Response
  246.     {
  247.         $intituleOffre=null;
  248.         $offres $repo->findBy(["isDeleted" => 0], ['id' => 'desc']);
  249.         $date_filtre=null;
  250.         $pagination $paginator->paginate(
  251.             $offres/* query NOT result */
  252.             $request->query->getInt('page'1), /*page number*/
  253.             /*limit per page*/
  254.         );
  255.         return $this->render('offre/show.html.twig', [
  256.             'offres' => $pagination,
  257.             'dateFilter' => $date_filtre,
  258.             'intituleOffreFilter' => $intituleOffre,
  259.         ]);
  260.     }
  261.       /**
  262.      * @Route("/offres", name="offres_show")
  263.      */
  264.     public function show(OffreRepository $repo PaginatorInterface $paginator,Request $request): Response
  265.     {
  266.         $intituleOffre=null;
  267.         $offres $repo->findBy(["isDeleted" => 0], ['id' => 'asc']);
  268.         $date_filtre=null;
  269.         return $this->render('offre/offres.html.twig', [
  270.             'offres' => $offres,
  271.             'dateFilter' => $date_filtre,
  272.             'intituleOffreFilter' => $intituleOffre,
  273.         ]);
  274.     }
  275. }