src/Controller/ProjectsController.php line 38

  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\Routing\Annotation\Security;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Doctrine\Persistence\ManagerRegistry;
  11. use App\Entity\Projects;
  12. use App\Form\ProjectsType;
  13. use App\Repository\ProjectsRepository;
  14. use OlaSoft\Common;
  15. use App\Entity\UsersActivities;
  16. /**
  17.  * @Route("/os-admin/projects", name="projects-")
  18.  */
  19. class ProjectsController extends AbstractController
  20. {
  21.     public function __construct(ManagerRegistry $doctrine){
  22.         $this->doctrine =  $doctrine;
  23.     }
  24.     
  25.     private $doctrine;
  26.     
  27.     public function getDoctrine()
  28.     {
  29.         return $this->doctrine;
  30.     }
  31.     /**
  32.      * @Route("/",name="admin")
  33.      */
  34.     public function indexAction(Request $request)
  35.     {
  36.         $em $this->getDoctrine()->getManager();
  37.         $list $em->getRepository(Projects::class)->findBy(array(),array('id'=>'DESC'));
  38.         $ajax $request->isXmlHttpRequest();
  39.         $response $this->render('Admin\index.html.twig',[
  40.             'list'=>$list,
  41.             'ajax'=>$ajax,
  42.             'noResearch'=>true,
  43.             "title"=> "Gestion des projects",
  44.             "subtitle"=> "Liste des projects",
  45.             "addBtnClass"=>"btn-popup semi"
  46.         ]);
  47.         return $ajax ?
  48.             new Response(\json_encode([
  49.                 'content'=>$response->getContent(),
  50.                 "title"=> "Gestion des projects",
  51.                 "subtitle"=> "Liste des projects"
  52.             ]))
  53.         : $response;
  54.     }
  55.     /**
  56.      * @Route("/add", name="new")
  57.      * @Route("/{id}/edit", name="edit")
  58.      */
  59.     public function edit(Request $request,Projects $project null)
  60.     {
  61.         if(!$project){
  62.             $project = new Projects;
  63.             $project->setUser($this->getUser());
  64.             $project->setCreatedAt(new \DateTime);
  65.         }
  66.         else{
  67.             $project->setUpdatedBy($this->getUser());
  68.             $project->setLastUpdate(new \DateTime);
  69.         }
  70.         $em $this->getDoctrine()->getManager();
  71.         $form $this->createForm(ProjectsType::class, $project);
  72.         $form->handleRequest($request);
  73.         if ($form->isSubmitted() && $form->isValid()){
  74.             $project->setSlug(Common::slug($project->getName()));
  75.             $em->persist($project);
  76.             $em->flush();
  77.             Common::trackChange($em$project$this->getUser(), 'edit'"Édition d'un projet");
  78.             $this->addFlash("notice","Enregistrement effectué avec succès.");
  79.             return $this->redirectToRoute('projects-admin');
  80.         }
  81.         $ajax $request->isXmlHttpRequest();
  82.         $response $this->render('Admin\edit.html.twig',[
  83.             'form'=>$form->createView(),
  84.             'ajax'=>$ajax,
  85.             "title"=> "Gestion des projects",
  86.             "subtitle"=>"Edition d'un project "
  87.         ]);
  88.         return $ajax ?
  89.             new Response(\json_encode([
  90.                 'content'=>$response->getContent(),
  91.                 "title"=> "Gestion des projects",
  92.                 "subtitle"=>"Edition d'un project "
  93.             ]))
  94.         : $response;
  95.      }
  96.     /**
  97.      * @Route("/{id}/enable/", name="enable")
  98.      */
  99.     public function enable(Request $requestProjects $project)
  100.     {
  101.         $em $this->getDoctrine()->getManager();
  102.         $project->setIsEnabled(!$project->getIsEnabled());
  103.         $em->persist($project);
  104.         $em->flush();
  105.         Common::trackChange($em$project$this->getUser(), 'enable'"Activation/désactivation d'un projet");
  106.         $ajax $request->isXmlHttpRequest();
  107.         if(!$ajax)
  108.             $this->addFlash("notice","Activation / Désactivation effectuée avec succès.");
  109.         return $ajax
  110.             ? new Response(\json_encode(['status'=>$project->getIsEnabled(), 'notice'=>'Activation / Désactivation effectuée avec succès.']))
  111.             : $this->redirectToRoute('projects-admin');
  112.     }
  113. }