src/Controller/Admin/TaskController.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Controller\BaseController;
  4. use App\DataTable\TaskType as TaskTypeDT;
  5. use App\Entity\Task;
  6. use App\Entity\TaskStatut;
  7. use App\Form\TaskType;
  8. use App\Manager\AttachementManager;
  9. use App\Repository\ProjectRepository;
  10. use App\Repository\TaskRepository;
  11. use App\Repository\TaskStatutRepository;
  12. use App\Service\StatutService;
  13. use App\Service\StringService;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. /**
  18.  * @Route("/admin/task-project")
  19.  */
  20. class TaskController extends BaseController
  21. {
  22.     /**
  23.      * @Route("/", name="admin_task_index", methods={"GET","POST"})
  24.      * @param Request $request
  25.      * @param TaskStatutRepository $taskStatutRepository
  26.      * @return Response
  27.      */
  28.     public function index(Request $requestTaskStatutRepository $taskStatutRepository): Response
  29.     {
  30.         $datatable $this->createDataTable(TaskTypeDT::class);
  31.         $datatable->handleRequest($request);
  32.         if ($datatable->isCallback()) {
  33.             return $datatable->getResponse();
  34.         }
  35.         return $this->render('admin/task/index.html.twig', [
  36.             'datatable' => $datatable,
  37.             'taskStatus' => $taskStatutRepository->findAllActive(),
  38.         ]);
  39.     }
  40.     /**
  41.      * @Route("/new", name="admin_task_new", methods={"GET", "POST"},
  42.      * defaults={"title": "Ajout d' une tâche"})
  43.      * @param Request $request
  44.      * @param TaskStatutRepository $taskStatusRepository
  45.      * @param ProjectRepository $projectRepository
  46.      * @param AttachementManager $attachementManager
  47.      * @return Response
  48.      */
  49.     public function new(Request $requestTaskStatutRepository $taskStatusRepository,
  50.                         ProjectRepository $projectRepositoryAttachementManager $attachementManager): Response
  51.     {
  52.         $task = new Task();
  53.         $project $projectRepository->findOneBy(['id' => $request->query->get('project')]);
  54.         if ($project){
  55.             $task->setProject($project);
  56.         }
  57.         $projects $projectRepository->findBy(['status' => true]);
  58.         if (count($projects) === 1){
  59.             $task->setProject(current($projects));
  60.         }
  61.         $statut $taskStatusRepository->getFirst();
  62.         $task->setTaskStatus($statut);
  63.         $form $this->createForm(TaskType::class, $task);
  64.         $form->handleRequest($request);
  65.         if ($form->isSubmitted() && $form->isValid()) {
  66.             $task->setReference(StringService::generateRandomStringByProject($task));
  67.             $this->entityManager->persist($task);
  68.             $this->entityManager->flush();
  69.             $files $request->files->get('taskfile');
  70.             if ($files){
  71.                 $attachementManager->addAttach($files,$tasknull);
  72.             }
  73.             $this->addFlash('success''Enregistrement efféctué avec succès');
  74.             return $this->redirectToRoute('admin_task_index', [], Response::HTTP_SEE_OTHER);
  75.         }
  76.         return $this->renderForm('admin/task/new.html.twig', [
  77.             'task' => $task,
  78.             'form' => $form,
  79.             'taskStatus' =>  $taskStatusRepository->findAll(),
  80.         ]);
  81.     }
  82.     /**
  83.      * @Route("/{id}", name="admin_task_show", methods={"GET"},
  84.      * defaults={"title": "Detail d' une tâche"})
  85.      * @param Task $task
  86.      * @param TaskRepository $taskRepository
  87.      * @param TaskStatutRepository $taskStatutRepository
  88.      * @return Response
  89.      */
  90.     public function show(Task $taskTaskRepository $taskRepositoryTaskStatutRepository $taskStatutRepository): Response
  91.     {
  92.         $taskRecents $taskRepository->getTaskRecent($task->getId());
  93.         return $this->render('admin/task/show.html.twig', [
  94.             'task' => $task,
  95.             'taskRecents' => $taskRecents,
  96.             'taskStatus' => $taskStatutRepository->findAllActive(),
  97.         ]);
  98.     }
  99.     /**
  100.      * @Route("/{id}/edit", name="admin_task_edit", methods={"GET", "POST"},
  101.      * defaults={"title": "Edition d' une tâche"})
  102.      * @param Request $request
  103.      * @param Task $task
  104.      * @param TaskStatutRepository $taskStatusRepository
  105.      * @param AttachementManager $attachementManager
  106.      * @return Response
  107.      */
  108.     public function edit(Request $requestTask $task,
  109.                          TaskStatutRepository $taskStatusRepository,
  110.                          AttachementManager $attachementManager): Response
  111.     {
  112.         $taskStatus =  $taskStatusRepository->  findAll();  
  113.         $form $this->createForm(TaskType::class, $task);
  114.         $form->handleRequest($request);
  115.         if ($form->isSubmitted() && $form->isValid()) {
  116.             $this->entityManager->flush();
  117.             $files $request->files->get('taskfile');
  118.             if ($files){
  119.                 $attachementManager->addAttach($files$tasknull);
  120.             }
  121.             $this->addFlash('success''Enregistrement efféctué avec succès');
  122.             return $this->redirectToRoute('admin_task_index', [], Response::HTTP_SEE_OTHER);
  123.         }
  124.         return $this->renderForm('admin/task/edit.html.twig', [
  125.             'task' => $task,
  126.             'form' => $form,
  127.             'taskStatus' =>  $taskStatus,    
  128.         ]);
  129.     }
  130.     /**
  131.      * @Route("/{id}/delete", name="admin_task_delete", methods={"POST","GET"})
  132.      * @param Task $task
  133.      * @return Response
  134.      */
  135.     public function delete(Task $task): Response
  136.     {
  137.         if ($task){
  138.             $this->entityManager->remove($task);
  139.             $this->entityManager->flush();
  140.             $this->addFlash('success''Suppression efféctué avec succées');
  141.         }
  142.         return $this->redirectToRoute('admin_task_index', [], Response::HTTP_SEE_OTHER);
  143.     }
  144. }