src/Controller/EventsController.php line 81

  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\Routing\Annotation\Method;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpFoundation\File\UploadedFile;
  10. use Symfony\Component\HttpFoundation\File\File;
  11. use Doctrine\Common\Collections\ArrayCollection;
  12. use Symfony\Component\Validator\Validator\ValidatorInterface;
  13. use App\Entity\Events;
  14. use App\Entity\Banners;
  15. use App\Entity\Documents;
  16. use App\Form\EventsType;
  17. use App\Entity\EventsPictures;
  18. use App\Entity\Pictures;
  19. use App\Entity\UsersActivities;
  20. use OlaSoft\Common;
  21. /**
  22.  * @Route("/os-admin/events")
  23.  */
  24. class EventsController extends AbstractController
  25. {    
  26.     public function __construct(ManagerRegistry $doctrine){
  27.         $this->doctrine =  $doctrine;
  28.     }
  29.     
  30.     private $doctrine;
  31.     
  32.     public function getDoctrine()
  33.     {
  34.         return $this->doctrine;
  35.     }
  36.     /**
  37.      *
  38.      * @Route("/page/{offset}/",name="events-admin-page")
  39.      * @Route("/",name="events-admin")
  40.      * @Route("/search/{keywords}/page/{offset}/",name="events-search-admin-page")
  41.      * @Route("/search/{keywords}/",name="events-search-admin")
  42.      */
  43.     public function admin(Request $request$keywords=null,$offset=1)
  44.     {
  45.         $offset--;
  46.         $limit 20;
  47.         $of=$offset*$limit;
  48.         $em $this->getDoctrine()->getManager();
  49.         $list $em->getRepository(Events::class)->findBy(array(),array('id'=>'DESC'));
  50.         $ajax $request->isXmlHttpRequest();
  51.         $response $this->render('Admin\index.html.twig',[
  52.             'list'=>$list,
  53.             'ajax'=>$ajax,
  54.             // 'count'=>$count,
  55.             // 'table_limit'=>$limit,
  56.             // 'offset'=>$offset,
  57.             'addBtnClass'=>'btn-popup semi',
  58.             "title"=>"Gestion des events ",
  59.             "subtitle"=>"Liste de tous les events"
  60.         ]);
  61.         return $ajax ?
  62.             new Response(\json_encode([
  63.                 'content'=>$response->getContent(),
  64.                 "title"=>"Gestion des events ",
  65.                 "subtitle"=>"Liste de tous les events"
  66.             ]))
  67.         : $response;
  68.     }
  69.     /**
  70.      * @Route("/add/",name="events-new", defaults={"isEdit":false})
  71.      * @Route("/{id}/edit",name="events-edit")
  72.      */
  73.     public function edit(Request $requestEvents $item=null$isEdit trueValidatorInterface $validator)
  74.     {
  75.         $em $this->getDoctrine()->getManager();
  76.         if($item === null){
  77.             $item = new Events();
  78.             $item->setCreatedBy($this->getUser());
  79.         }
  80.         $form=$this->createForm(EventsType::class,$item);
  81.         $form->handleRequest($request);
  82.         if($form->isSubmitted() && $form->isValid()){
  83.             $item->setSlug(Common::slug($item->getName()));
  84.             $em->persist($item);
  85.             $em->flush();
  86.             Common::trackChange($em$item$this->getUser(), 'edit'"Édition d'un événement");
  87.             $this->addFlash('notice','Enregistrement effectué avec succès');
  88.             return $this->redirectToRoute('events-admin');
  89.         }
  90.         $ajax $request->isXmlHttpRequest();
  91.         $response $this->render('Admin\edit.html.twig',[
  92.             'form' => $form->createView(),
  93.             'ajax' => $ajax,
  94.             'title' => "Gestion des events ",
  95.             'subtitle' => "Edition d'un événement",
  96.         ]);
  97.         return $ajax ?
  98.             new Response(\json_encode([
  99.                 'content' => $response->getContent(),
  100.                 'title' => "Gestion des events ",
  101.                 'subtitle' => "Edition d'un événement"
  102.             ]))
  103.         : $response;
  104.     }
  105.     /**
  106.      * @Route("/{id}/enable", name="events-enable")
  107.      */
  108.     public function enable(Request $requestEvents $item)
  109.     {
  110.         $em $this->getDoctrine()->getManager();
  111.         $item->setIsEnabled(!$item->getIsEnabled());
  112.         $em->persist($item);
  113.         $em->flush();
  114.         Common::trackChange($em$item$this->getUser(), $item->getIsEnabled() ? 'enable' 'disable'$item->getIsEnabled() ? "Activation d'un événement" "Désactivation d'un événement");
  115.         $ajax $request->isXmlHttpRequest();
  116.         if(!$ajax$this->addFlash("notice","Activation / Désactivation effectuée avec succès.");
  117.         return $ajax
  118.             ? new Response(\json_encode(['status'=>$item->getIsEnabled(), 'notice'=>'Activation / Désactivation effectuée avec succès.']))
  119.             : $this->redirectToRoute('events-admin');
  120.     }
  121. }