src/Controller/Backend/PtiModuleController.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Backend;
  3. use App\Controller\Base\BaseController;
  4. use App\Entity\PtiModule;
  5. use App\Entity\PtiModuleAction;
  6. use App\Filter\PtiModuleFilterType;
  7. use App\Form\PtiModuleType;
  8. use App\Repository\PtiModuleActionRepository;
  9. use App\Repository\PtiModuleRepository;
  10. use App\Repository\PtiRuleRepository;
  11. use App\Utils\ObjectManager;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Kematjaya\Breadcrumb\Lib\Builder as BreacrumbBuilder;
  15. use Knp\Component\Pager\PaginatorInterface;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  18. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  19. /**
  20.  * Require ROLE_SUPER_USER for *every* controller method in this class.
  21.  *
  22.  * @IsGranted("ROLE_SUPER_USER")
  23.  */
  24. class PtiModuleController extends BaseController
  25. {
  26.     private $pageName 'pti_module';
  27.     private $class PtiModule::class;
  28.     /**
  29.      * @Route("/module", name="pti_module")
  30.      */
  31.     public function index(BreacrumbBuilder $builderRequest $requestPaginatorInterface $paginatorInterfacePtiModuleRepository $PtiModuleRepo): Response
  32.     {
  33.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  34.         $builder->add('Modules');
  35.         $form $this->createFormFilter(PtiModuleFilterType::class);
  36.         $queryBuilder $this->getQueryBuilder($this->class);
  37.         $queryBuilder $this->buildFilter($request$form$queryBuilder)->addOrderBy("this.id""DESC");
  38.         
  39.         $this->setSessionLimit($request);
  40.         $maxPerPage $request->getSession()->get("limit") ? $request->getSession()->get("limit") : $this->getLimit();
  41.         $pagination $paginatorInterface->paginate($queryBuilder$request->query->getInt('page'1), $maxPerPage);
  42.         $parent $PtiModuleRepo->findAll();
  43.         
  44.         return $this->render('backend/pti_module/index.html.twig', [
  45.             'page_name' => $this->pageName,
  46.             'button_credential' => $this->buttonCredentials($this->pageName),
  47.             'filter' => $form->createView(),
  48.             'pagination' => $pagination,
  49.             'parent' => $parent
  50.         ]);
  51.     }
  52.     /**
  53.      * @Route("/module/form/{id}", defaults={"id"= null}, name="pti_module_form", methods={"POST", "GET"})
  54.      */
  55.     public function form(?string $id nullRequest $requestPtiModuleRepository $PtiModuleRepo)
  56.     {
  57.         if($id){
  58.             $ptimodule $PtiModuleRepo->find($id);
  59.         } else {
  60.             $ptimodule = new PtiModule();
  61.         }
  62.         if(!$ptimodule){
  63.             throw new NotFoundHttpException();
  64.         }
  65.         $form $this->createForm(PtiModuleType::class, $ptimodule, ['action' => $this->generateUrl('pti_module_form', ['id' => $ptimodule->getId()])]);
  66.         $form->handleRequest($request);
  67.         if ($form->isSubmitted() && $form->isValid()) {
  68.             $user $form->getData();
  69.             $user->setCreateAt(new \DateTime());
  70.             $user->setParent($request->request->get('parent'));
  71.             $entityManager $this->getDoctrine()->getManager();
  72.             $entityManager->persist($user);
  73.             if($id){
  74.                 $this->addFlash('notice''Module "' $user->getModule() . '" berhasil diubah');
  75.             }else{
  76.                 $this->addFlash('notice''Module "' $user->getModule() . '" berhasil dibuat');
  77.             }
  78.             $entityManager->flush();
  79.             return $this->redirectToRoute('pti_module');
  80.         }
  81.         $ptiM $PtiModuleRepo->findAll();
  82.         return $this->render('/backend/pti_module/form.html.twig', ['ptimodule' => $ptiM'form' => $form->createView()]);
  83.     }
  84.     /**
  85.      * @Route("/module/{id}/detail", name="pti_module_detail", methods={"GET", "POST"})
  86.      */
  87.     public function detail(?string $idPtiRuleRepository $ptiRuleRepoBreacrumbBuilder $builderPtiModuleRepository $ptiModuleRepoPtiModuleActionRepository $ptiModuleActionRepo)
  88.     {
  89.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  90.         $builder->add('Modules''pti_module');
  91.         $builder->add('Detail');
  92.         $module $ptiModuleRepo->find($id);
  93.         $module_action $ptiModuleActionRepo->findBy(['module' => $id], ['id' => 'asc']);
  94.         $ptiRule $ptiRuleRepo->findAll();
  95.         $ptiRule = [];
  96.         foreach($module_action as $ma){
  97.             $pr $ptiRuleRepo->getRule($ma->getId());
  98.             $ptiRule[$ma->getId()] = $pr;
  99.         }
  100.         
  101.         // foreach($module_action as $ma){
  102.         //     $ptiRule = $ptiRuleRepo->getRule($ma->getId());
  103.         // }
  104.         // $ptiRule = $ptiRuleRepo->getRule(51);
  105.         // dump($ptiRule);exit;
  106.         return $this->render('/backend/pti_module/detail.html.twig', [
  107.             'page_name' => $this->pageName,
  108.             'button_credential' => $this->buttonCredentials($this->pageName),
  109.             'module' => $module,
  110.             'module_action' => $module_action,
  111.             'group' => $ptiRule
  112.         ]);
  113.         
  114.     }
  115.     /**
  116.      * @Route("/module/{id}/form_action", name="pti_module_form_action", methods={"GET", "POST"})
  117.      */
  118.     public function form_action(?string $idRequest $requestPtiModuleRepository $ptiModuleRepoPtiModuleActionRepository $ptiModuleActionRepo)
  119.     {
  120.         $module $ptiModuleRepo->find($id);
  121.         $action $ptiModuleActionRepo->findOneBy(['module' => $module->getId(), 'action' => trim(strtolower($request->get('aksi')))]);
  122.         if (!$action) {
  123.             $form = new PtiModuleAction();
  124.             $form->setAction(trim(strtolower($request->get('aksi'))));
  125.             $form->setModule($module);
  126.             $entityManager $this->getDoctrine()->getManager();
  127.             $entityManager->persist($form);
  128.             $entityManager->flush();
  129.             $this->addFlash('notice''Action "' $form->getAction() . '" berhasil ditambahkan');
  130.         } else{
  131.             $this->addFlash('warning''Action sudah ada');
  132.         }
  133.         return $this->redirectToRoute('pti_module_detail', [
  134.             'id' => $id,
  135.         ]);
  136.         
  137.     }
  138.     /**
  139.      * @Route("/module/{id}/import_action", name="pti_module_import_action", methods={"GET", "POST"})
  140.      */
  141.     public function import_action(?string $idRequest $requestPtiModuleRepository $ptiModuleRepoPtiModuleActionRepository $ptiModuleActionRepo)
  142.     {
  143.         $module $ptiModuleRepo->find($id);
  144.         $list_action = array('index''new''edit''delete''detail');
  145.         foreach($list_action as $ls){
  146.             $action $ptiModuleActionRepo->findOneBy(['module' => $module->getId(), 'action' => $ls]);
  147.             if (!$action) {
  148.                 $form = new PtiModuleAction();
  149.                 $form->setAction($ls);
  150.                 $form->setModule($module);
  151.                 $entityManager $this->getDoctrine()->getManager();
  152.                 $entityManager->persist($form);
  153.                 $entityManager->flush();
  154.             }
  155.         }
  156.         $this->addFlash('notice''Action berhasil ditambahkan');
  157.         return $this->redirectToRoute('pti_module_detail', [
  158.             'id' => $id,
  159.         ]);
  160.         
  161.     }
  162.     /**
  163.      * @Route("/module/{id}/delete_action", name="pti_module_delete_action", methods={"GET", "POST"})
  164.      */
  165.     public function delete_action(?string $idRequest $requestPtiModuleActionRepository $ptiModuleActionRepo)
  166.     {
  167.         $action $ptiModuleActionRepo->find($id);
  168.         $module $action->getModule();
  169.         $entityManager $this->getDoctrine()->getManager();
  170.         $entityManager->remove($action);
  171.         $entityManager->flush();
  172.         $this->addFlash('notice''Action "' $action->getAction() . '" berhasil dihapus');
  173.         return $this->redirectToRoute('pti_module_detail', [
  174.             'id' => $module->getId(),
  175.         ]);
  176.         
  177.     }
  178.     /**
  179.      * @Route("/module/{id}/delete_bidang", name="pti_module_delete", methods={"GET"})
  180.      */
  181.     public function delete(?string $id nullPtiModuleRepository $PtiModuleRepo)
  182.     {
  183.         $ptimodule $PtiModuleRepo->find($id);
  184.        // dump($kategori); exit;
  185.         $entityManager $this->getDoctrine()->getManager();
  186.         $entityManager->remove($ptimodule);
  187.         $entityManager->flush();
  188.         $this->addFlash('notice''Module "' $ptimodule->getModule() . '" berhasil dihapus');
  189.         return $this->redirectToRoute('pti_module');
  190.     }
  191.      /**
  192.      * @Route("module/add_selected", name="pti_module_add_selected", methods={"POST"})
  193.      */
  194.     public function add_selected(Request $requestObjectManager $objectManager)
  195.     {
  196.         $sessionName $request->get("name");
  197.         $this->get('session')->set($sessionName$request->get('selected'));
  198.         $selected = (!empty($this->get('session')->get($sessionName))) ? $this->get('session')->get($sessionName) : [];
  199.         return $this->json($selected);
  200.     }
  201.     /**
  202.      * @Route("module/action_selected", name="pti_module_action_selected", methods={"POST"})
  203.      */
  204.     public function action_selected(Request $requestObjectManager $objectManager)
  205.     {
  206.         $sessionName $request->get("name");
  207.         if ($this->isCsrfTokenValid($sessionName '_action_selected'$request->request->get('_token')))
  208.         {
  209.             $selected = (!empty($this->get('session')->get($sessionName))) ? $this->get('session')->get($sessionName) : [];
  210.             $deleted $objectManager->deleteByIds($this->class$selected);
  211.             if($deleted) {
  212.                 $this->get('session')->set($sessionName, []);
  213.                 $this->addFlash('success'$this->getTranslator()->trans('messages.deleted.success'));
  214.             } else {
  215.                 $this->addFlash('error'$this->getTranslator()->trans('messages.deleted.error'));
  216.             }
  217.         }
  218.         
  219.         return $this->redirectToRoute('pti_module');
  220.     }
  221. }