src/Controller/Backend/MUserController.php line 57

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Backend;
  3. use App\Controller\Base\BaseController;
  4. use App\Entity\MUser;
  5. use App\Filter\MUserFilterType;
  6. use App\Form\MUserType;
  7. use App\Repository\MUserRepository;
  8. use App\Utils\ObjectManager;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Kematjaya\Breadcrumb\Lib\Builder as BreacrumbBuilder;
  13. use Knp\Component\Pager\PaginatorInterface;
  14. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  15. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  16. use Symfony\Component\PasswordHasher\Hasher\PasswordHasherFactoryInterface;
  17. /**
  18.  * Require ROLE_ADMIN for *every* controller method in this class.
  19.  *
  20.  * @IsGranted("ROLE_ADMINISTRATOR")
  21.  */
  22. class MUserController extends BaseController
  23. {
  24.     private $pageName 'user';
  25.     private $class MUser::class;
  26.     /**
  27.      * @Route("/user", name="user")
  28.      */
  29.     public function index(BreacrumbBuilder $builderRequest $requestPaginatorInterface $paginatorInterface): Response
  30.     {
  31.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  32.         $builder->add('User');
  33.         $form $this->createFormFilter(MUserFilterType::class);
  34.         $queryBuilder $this->getQueryBuilder($this->class);
  35.         $queryBuilder $this->buildFilter($request$form$queryBuilder)->addOrderBy("this.id""DESC");
  36.         
  37.         $this->setSessionLimit($request);
  38.         $maxPerPage $request->getSession()->get("limit") ? $request->getSession()->get("limit") : $this->getLimit();
  39.         $pagination $paginatorInterface->paginate($queryBuilder$request->query->getInt('page'1), $maxPerPage);
  40.         
  41.         return $this->render('backend/user/index.html.twig', [
  42.             'page_name' => $this->pageName,
  43.             'button_credential' => $this->buttonCredentials($this->pageName),
  44.             'filter' => $form->createView(),
  45.             'pagination' => $pagination,
  46.         ]);
  47.     }
  48.     /**
  49.      * @Route("/user/form/{id}", defaults={"id"= null}, name="user_form", methods={"POST", "GET"})
  50.      */
  51.     public function form(?string $id nullRequest $requestMUserRepository $mUserRepo)
  52.     {
  53.         if ($id) {
  54.             $user $mUserRepo->find($id);
  55.         } else {
  56.             $user = new MUser();
  57.         }
  58.         if (!$user) {
  59.             throw new NotFoundHttpException();
  60.         }
  61.         
  62.         $form $this->createForm(MUserType::class, $user, ['action' => $this->generateUrl('user_form', ['id' => $user->getId()])]); //Jadi lebih singkat
  63.         $form->handleRequest($request);
  64.         if ($form->isSubmitted() && $form->isValid()) {
  65.             $user $form->getData();
  66.             $user->setIsActive(true);
  67.             $entityManager $this->getDoctrine()->getManager();
  68.             $entityManager->persist($user);
  69.             $entityManager->flush();
  70.             if($id){
  71.                 $this->addFlash('notice''User "' $user->getName() . '" berhasil diubah');
  72.             }else{
  73.                 $this->addFlash('notice''User "' $user->getName() . '" berhasil dibuat');
  74.             }
  75.             return $this->redirectToRoute('user');
  76.         }
  77.         return $this->render('backend/user/form.html.twig', ['form' => $form->createView()]);
  78.     }
  79.     /**
  80.      * @Route("/user/{id}/delete_user", name="user_delete", methods={"GET"})
  81.      */
  82.     public function delete(MUser $mUser)
  83.     {
  84.         //dump($myUserRepository); exit;
  85.         $entityManager $this->getDoctrine()->getManager();
  86.         $entityManager->remove($mUser);
  87.         $entityManager->flush();
  88.         $this->addFlash('notice''User "' $mUser->getName() . '" berhasil dihapus');
  89.         return $this->redirectToRoute('user');
  90.     }
  91.     /**
  92.      * @Route("/profile/", name="user_profile")
  93.      */
  94.     public function profile(Request $requestMUserRepository $mUserRepo)
  95.     {
  96.         $user_id $this->getUser()->getId();
  97.         $user $mUserRepo->find($user_id);
  98.         return $this->render('user/profile.html.twig', [
  99.             'profile' => $user,
  100.             'title' => 'Profile'
  101.         ]);
  102.     }
  103.      /**
  104.      * @Route("user/add_selected", name="user_add_selected", methods={"POST"})
  105.      */
  106.     public function add_selected(Request $requestObjectManager $objectManager)
  107.     {
  108.         $sessionName $request->get("name");
  109.         $this->get('session')->set($sessionName$request->get('selected'));
  110.         $selected = (!empty($this->get('session')->get($sessionName))) ? $this->get('session')->get($sessionName) : [];
  111.         return $this->json($selected);
  112.     }
  113.     /**
  114.      * @Route("user/action_selected", name="user_action_selected", methods={"POST"})
  115.      */
  116.     public function action_selected(Request $requestObjectManager $objectManager)
  117.     {
  118.         $sessionName $request->get("name");
  119.         if ($this->isCsrfTokenValid($sessionName '_action_selected'$request->request->get('_token')))
  120.         {
  121.             $selected = (!empty($this->get('session')->get($sessionName))) ? $this->get('session')->get($sessionName) : [];
  122.             $deleted $objectManager->deleteByIds($this->class$selected);
  123.             if($deleted) {
  124.                 $this->get('session')->set($sessionName, []);
  125.                 $this->addFlash('success'$this->getTranslator()->trans('messages.deleted.success'));
  126.             } else {
  127.                 $this->addFlash('error'$this->getTranslator()->trans('messages.deleted.error'));
  128.             }
  129.         }
  130.         
  131.         return $this->redirectToRoute('user');
  132.     }
  133.     /**
  134.      * @Route("/user/{id}/detail_user", name="user_detail", methods={"GET","POST"})
  135.      */
  136.     public function detail(MUserRepository $mUserrepoMUser $mUser)
  137.     {
  138.         $detail $mUserrepo->find($mUser);
  139.         return $this->render('backend/user/detail.html.twig', [
  140.             'users' => $detail
  141.         ]);
  142.     }
  143.     /**
  144.      * @Route("/user/{id}/reset_pass", name="user_reset_pass", methods={"GET","POST"})
  145.      */
  146.     public function resetPass(MUser $mUserPasswordHasherFactoryInterface $encoderFactory){
  147.         $encoder $encoderFactory->getPasswordHasher($mUser);
  148.         $password $encoder->hash('admin');
  149.         $mUser->setPassword($password);
  150.         $entityManager $this->getDoctrine()->getManager();
  151.         $entityManager->persist($mUser);
  152.         $entityManager->flush();
  153.         $this->addFlash('notice''Password "' $mUser->getUsername() . '" berhasil direset');
  154.         return $this->redirectToRoute('user');
  155.     }
  156. }