src/Controller/TodosController.php line 119

Open in your IDE?
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tim.schelle
  5. * Date: 30.01.2019
  6. * Time: 17:12
  7. */
  8. namespace App\Controller;
  9. use App\Entity\BackTemplates;
  10. use App\Entity\Process;
  11. use App\Entity\Todos;
  12. use App\Entity\User;
  13. use App\Service\Ajax;
  14. use Doctrine\Persistence\ManagerRegistry;
  15. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  16. use Symfony\Component\Form\FormError;
  17. use Symfony\Component\HttpFoundation\JsonResponse;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Contracts\Translation\TranslatorInterface;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. /**
  22. * Todos controller.
  23. *
  24. * @Route("/todos")
  25. */
  26. class TodosController extends AbstractController
  27. {
  28.     private $doctrine;
  29.     public function __construct(ManagerRegistry $doctrine)
  30.     {
  31.         $this->doctrine $doctrine;
  32.     }
  33.     /**
  34.     * create new todos
  35.     *
  36.     * @Route("/new/{processId}", name="todos_new", defaults={"processId"=Null}, methods={"GET", "POST"})
  37.     */
  38.     public function createAction(Request $requestAjax $ajax$processIdTranslatorInterface $translator)
  39.     {
  40.         $em $this->doctrine->getManager();
  41.         $helpdesk $em->getRepository(\App\Entity\HelpDesk::class)->findOneBy(["controller" => $request->get('_route'), "roles"=>$this->getUser()->getRoles(), "language"=>$request->getLocale()]);
  42.         $user $this->getUser();
  43.         if(!($user->getRole()->getId() == User::ROLE_ADMIN || $user->getRole()->getId() == User::ROLE_SUPER_ADMIN))
  44.         {
  45.             $this->addFlash('error'$translator->trans('not_permitted'));
  46.             return $this->redirectToRoute('homepage');
  47.         }
  48.         $todos = new Todos();
  49.         $backtemplate = new BackTemplates();
  50.         $process Null;
  51.         if(isset($processId))
  52.         {
  53.             $process $em->getRepository(\App\Entity\Process::class)->findOneBy(["id" => $processId]);
  54.             $todos->setProcess($process);
  55.         }
  56.         $form $this->createForm(\App\Form\TodosType::class, $todos);
  57.         $formBacktemplate $this->createForm(\App\Form\BacktemplateType::class, $backtemplate);
  58.         $form->handleRequest($request);
  59.         $formBacktemplate->handleRequest($request);
  60.         //AJAX
  61.         if($request->isXmlHttpRequest() || $request->query->get('showJson') == 1)
  62.         {
  63.             $data $ajax->call($request);
  64.             return new JsonResponse($data);
  65.         }
  66.         if ($form->isSubmitted())
  67.         {
  68.             if ($form->get('due')->getViewData() >= date('Y-m-d') OR $form->get('due')->getViewData() > $todos->getDue())
  69.             {
  70.                 if ($backtemplate->getRetry() != null && $backtemplate->getBody() != null)
  71.                 {
  72.                     // $backtemplate->setDue(new \DateTime(date('Y-m-d H:00:00', strtotime($backtemplate->getDue()))));
  73.                     $backtemplate->setTodos($todos);
  74.                     $backtemplate->setDue($todos->getDue());
  75.                     $todos->setState(2);
  76.                     $em->persist($backtemplate);
  77.                     $em->persist($todos);
  78.                     $em->flush();
  79.                 } else {
  80.                     $todos->setState(0);
  81.                 }
  82.                 // $todos->setDue(new \DateTime(date('Y-m-d 00:00:00', strtotime($todos->getDue()))));
  83.                 $todos->setCreator($this->getUser());
  84.                 $em->persist($todos);
  85.                 $em->flush();
  86.                 return $this->redirectToRoute('dashboard_index');
  87.             } else {
  88.                 $form->get('due')->addError(new FormError('Datum ist in der Vergangenheit'));
  89.             }
  90.         }
  91.         return $this->render('todos/todos.html.twig', array(
  92.             'form' => $form->createView(),
  93.             'formBacktemplate' => $formBacktemplate->createView(),
  94.             'todos' => $todos,
  95.             'backtemplate' => $backtemplate,
  96.             'helpdesk' => $helpdesk,
  97.         ));
  98.     }
  99.     /**
  100.     * edit todos
  101.     *
  102.     * @Route("/edit/{id}", name="todos_edit", methods={"GET", "POST"})
  103.     */
  104.     public function editAction(Request $requestAjax $ajax$idTranslatorInterface $translator)
  105.     {
  106.         $em $this->doctrine->getManager();
  107.         $helpdesk $em->getRepository(\App\Entity\HelpDesk::class)->findOneBy(["controller" => $request->get('_route'), "roles"=>$this->getUser()->getRoles(), "language"=>$request->getLocale()]);
  108.         $user $this->getUser();
  109.         if(!($user->getRole()->getId() == User::ROLE_ADMIN || $user->getRole()->getId() == User::ROLE_SUPER_ADMIN))
  110.         {
  111.             $this->addFlash('error'$translator->trans('not_permitted'));
  112.             return $this->redirectToRoute('homepage');
  113.         }
  114.         $todos $em->getRepository(\App\Entity\Todos::class)->findOneBy(['id' => $id]);
  115.         $process $em->getRepository(\App\Entity\Process::class)->findOneBy(['id' => $todos->getProcess()]);
  116.         $backtemplates $em->getRepository(\App\Entity\BackTemplates::class)->findBy(["todos" => $todos]);
  117.         $backtemplate = new BackTemplates();
  118.         $backtemplate->setRetry(0);
  119.         //AJAX
  120.         if($request->isXmlHttpRequest() || $request->query->get('showJson') == 1)
  121.         {
  122.             $data $ajax->call($request);
  123.             return new JsonResponse($data);
  124.         }
  125.         foreach($backtemplates as $template)
  126.         {
  127.             if($backtemplate->getRetry() < $template->getRetry())
  128.             {
  129.                 $backtemplate $template;
  130.             }
  131.         }
  132.         if($backtemplate == null)
  133.         {
  134.             $backtemplate = new BackTemplates();
  135.             $backtemplate->setTodos($todos);
  136.         }
  137.         $form $this->createForm(\App\Form\TodosType::class, $todos, ['date' => $todos->getDue()]);
  138.         $formBacktemplate $this->createForm(\App\Form\BacktemplateType::class, $backtemplate);
  139.         $form->handleRequest($request);
  140.         $formBacktemplate->handleRequest($request);
  141.         $responsibility null;
  142.         if($todos->getTodo() != null)
  143.         {
  144.             $responsibility $todos->getTodo()->getResponsibility();
  145.         }
  146.         if ($responsibility == 1) {
  147.             $user $todos->getProcess()->getContactPersonCustomer();
  148.         } elseif ($responsibility == 2) {
  149.             $user $todos->getProcess()->getContactPersonSupplier();
  150.         } else {
  151.             $user $em->getRepository(\App\Entity\User::class)->findOneBy(['email' => 'scorebox@fra-services.de']);
  152.         }
  153.         if ($form->isSubmitted())
  154.         {
  155.             if ($form->get('due')->getViewData() > date('Y-m-d') OR $form->get('due')->getViewData() > $todos->getDue())
  156.             {
  157.                 $todos->setUpdatedAt(new \DateTime());
  158.                 $em->persist($todos);
  159.                 $em->flush();
  160.                 if ($backtemplate->getRetry() != null && $backtemplate->getBody() != null)
  161.                 {
  162.                     $backtemplate->setTodos($todos);
  163.                     $backtemplate->setDue($todos->getDue());
  164.                     $em->persist($backtemplate);
  165.                     $todos->setState(2);
  166.                     $em->persist($todos);
  167.                     $em->flush();
  168.                 }
  169.                 return $this->redirectToRoute('dashboard_index');
  170.             } else {
  171.                 $form->get('due')->addError(new FormError('Datum ist in der Vergangenheit'));
  172.             }
  173.         }
  174.         return $this->render('todos/todos.html.twig', array(
  175.             'form' => $form->createView(),
  176.             'formBacktemplate' => $formBacktemplate->createView(),
  177.             'todos' => $todos,
  178.             'backtemplate' => $backtemplate,
  179.             'user' => $user,
  180.             'helpdesk' => $helpdesk,
  181.         ));
  182.     }
  183.     /**
  184.     * close todos
  185.     *
  186.     * @Route("/close/{todosid}", name="todos_close", methods={"GET", "POST"})
  187.     */
  188.     public function closeTodosAction(
  189.         $todosid,
  190.         TranslatorInterface $translator
  191.         )
  192.         {
  193.             $em $this->doctrine->getManager();
  194.             $user $this->getUser();
  195.             $todos Null;
  196.             if(!($user->getRole()->getId() == User::ROLE_ADMIN || $user->getRole()->getId() == User::ROLE_SUPER_ADMIN))
  197.             {
  198.                 $this->addFlash('error'$translator->trans('not_permitted'));
  199.                 return $this->redirectToRoute('homepage');
  200.             }
  201.             $todos $em->getRepository(\App\Entity\Todos::class)->findOneBy(['id' => $todosid]);
  202.             if ($todos)
  203.             {
  204.                 $todo $todos->getTodo();
  205.                 if($todo)
  206.                 {
  207.                     $nextTodo $todo->getNextTodo();
  208.                     if($nextTodo)
  209.                     {
  210.                         $newTodos = new Todos();
  211.                         $newTodos->setProcess($todos->getProcess());
  212.                         $newTodos->setTodo($nextTodo);
  213.                         $newTodos->setState($todos->getState());
  214.                         $newTodos->setStaff($user);
  215.                         $newTodos->setCreator($user);
  216.                         $newTodos->setNotice($todos->getNotice());
  217.                         $newTodos->setDue($todos->getDue());
  218.                         $newTodos->setCreatedAt(new \DateTime("now"));
  219.                         $todos->setState(Todos::STATE_CLOSED);
  220.                         $em->persist($todos);
  221.                         $em->persist($newTodos);
  222.                         $this->addFlash('success'$translator->trans('todos.nextTodoCreated'));
  223.                     } else {
  224.                         $todos->setState(Todos::STATE_CLOSED);
  225.                         $process $todos->getProcess();
  226.                         $process->setState(Process::STATE_CLOSED);
  227.                         $processTodos $em->getRepository(\App\Entity\Todos::class)->findBy(['process' => $process]);
  228.                         foreach($processTodos as $todo)
  229.                         {
  230.                             $backtemplates $em->getRepository(\App\Entity\BackTemplates::class)->findBy(['todos' => $todo]);
  231.                             foreach($backtemplates as $backtemplate)
  232.                             {
  233.                                 $this->forward('AppBundle\Controller\TodosController::deleteBacktemplate', [
  234.                                     'id'  => $backtemplate->getId()
  235.                                 ]);
  236.                             }
  237.                             $todo->setState(Todos::STATE_CLOSED);
  238.                             $em->persist($todo);
  239.                         }
  240.                         $em->persist($todos);
  241.                         $em->persist($process);
  242.                         $this->addFlash('success'$translator->trans('todos.todosAndProcessFinished'));
  243.                     }
  244.                 } else {
  245.                     // Prüfen Todo
  246.                     $todos->setState(Todos::STATE_CLOSED);
  247.                     $em->persist($todos);
  248.                     $this->addFlash('success'$translator->trans('todos.finishedTodos'));
  249.                 }
  250.                 $em->flush();
  251.             }
  252.             return $this->redirectToRoute('dashboard_index');
  253.         }
  254.         /**
  255.         * close todos and repopen
  256.         *
  257.         * @Route("/closeReopenNewTodos/{todosid}/{todoid}", name="todos_close_reopen_new", defaults={"todosid"=Null, "todoid"=Null}, methods={"GET", "POST"})
  258.         */
  259.         public function closeReopenNewTodos(TranslatorInterface $translator$todosid$todoid)
  260.         {
  261.             $em $this->doctrine->getManager();
  262.             $user $this->getUser();
  263.             $todos Null;
  264.             $todo Null;
  265.             if(!($user->getRole()->getId() == User::ROLE_ADMIN || $user->getRole()->getId() == User::ROLE_SUPER_ADMIN))
  266.             {
  267.                 $this->addFlash('error'$translator->trans('not_permitted'));
  268.                 return $this->redirectToRoute('homepage');
  269.             }
  270.             $todos $em->getRepository(\App\Entity\Todos::class)->findOneBy(['id' => $todosid]);
  271.             $todo $em->getRepository(\App\Entity\Todo::class)->findOneBy(['id' => $todoid]);
  272.             if ($todos && $todo)
  273.             {
  274.                 $newTodos = new Todos();
  275.                 $newTodos->setProcess($todos->getProcess());
  276.                 $newTodos->setTodo($todo);
  277.                 $newTodos->setState($todos->getState());
  278.                 $newTodos->setStaff($user);
  279.                 $newTodos->setCreator($user);
  280.                 $newTodos->setNotice($todos->getNotice());
  281.                 $newTodos->setDue($todos->getDue());
  282.                 $newTodos->setCreatedAt(new \DateTime("now"));
  283.                 $todos->setState(Todos::STATE_CLOSED);
  284.                 $em->persist($newTodos);
  285.                 $em->persist($todos);
  286.                 $em->flush();
  287.                 $this->addFlash('success'$translator->trans('todos.nextTodoCreated'));
  288.             }
  289.             return $this->redirectToRoute('dashboard_index');
  290.         }
  291.         /**
  292.         * delete Backtemplate
  293.         *
  294.         * @Route("/deleteBacktemplate/{id}", name="backtemplate_delete", defaults={"id"=Null})
  295.         */
  296.         public function deleteBacktemplate(TranslatorInterface $translator$id)
  297.         {
  298.             $em $this->doctrine->getManager();
  299.             $user $this->getUser();
  300.             if(!($user->getRole()->getId() == User::ROLE_ADMIN || $user->getRole()->getId() == User::ROLE_SUPER_ADMIN))
  301.             {
  302.                 $this->addFlash('error'$translator->trans('not_permitted'));
  303.                 return $this->redirectToRoute('homepage');
  304.             }
  305.             $backTemplate $em->getRepository(\App\Entity\BackTemplates::class)->findOneBy(["id" => $id'sentAt' => null]);
  306.             if($backTemplate)
  307.             {
  308.                 $em->remove($backTemplate);
  309.                 $em->flush();
  310.             }
  311.             return $this->redirectToRoute('dashboard_index');
  312.         }
  313.         /**
  314.          * state close todos
  315.          *
  316.          * @Route("/close-state/{id}", name="todos_state_close", methods={"GET", "POST"})
  317.          */
  318.         public function closeStateTodosAction(
  319.             $id,
  320.             TranslatorInterface $translator
  321.         )
  322.         {
  323.             $em $this->doctrine->getManager();
  324.             $todos Null;
  325.             $user $this->getUser();
  326.             if(!($user->getRole()->getId() == User::ROLE_ADMIN || $user->getRole()->getId() == User::ROLE_SUPER_ADMIN))
  327.             {
  328.                 $this->addFlash('error'$translator->trans('not_permitted'));
  329.                 return $this->redirectToRoute('homepage');
  330.             }
  331.             $todos $em->getRepository(\App\Entity\Todos::class)->findOneBy(['id' => $id]);
  332.             $todos->setState(3);
  333.             $em->persist($todos);
  334.             $em->flush();
  335.             return $this->redirectToRoute('dashboard_index');
  336.         }
  337.     }