src/Controller/User/UserController.php line 42

  1. <?php
  2. namespace App\Controller\User;
  3. use App\Controller\AppController;
  4. use App\Entity\User;
  5. use App\Enum\RoleEnum;
  6. use App\Form\User\UserForm;
  7. use App\Service\User\UserService;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use Symfony\Component\HttpFoundation\RedirectResponse;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. /**
  14.  * Class UserController
  15.  * @package App\Controller\User
  16.  * @IsGranted("ROLE_USER")
  17.  */
  18. class UserController extends AppController
  19. {
  20.     /**
  21.      * @Route("/izbornik/vidljivost", name="operateri-izbornik-vidljiv", options={"expose" = true}, methods={"PATCH"})
  22.      * @param UserService $service
  23.      * @return JsonResponse
  24.      */
  25.     public function menuVisibility(UserService $service)
  26.     {
  27.         $visibility $this->getRequest()->get('data');
  28.         $service->setVisibility($this->getUser(), json_decode($visibility));
  29.         return new JsonResponse($this->getUser()->isMenuVisibility(), Response::HTTP_OK);
  30.     }
  31.     /**
  32.      * @Route("/{id}", name="operateri-profil")
  33.      * @param UserService $service
  34.      * @return RedirectResponse|Response
  35.      */
  36.     public function profile(UserService $service)
  37.     {
  38.         $form $this->createForm(UserForm::class, $this->getUser(), [
  39.             'validation_groups' => ['update'],
  40.             'create' => false
  41.         ]);
  42.         $form->handleRequest($this->getRequest());
  43.         if ($form->isSubmitted() && $form->isValid()) {
  44.             $service->updateMainProfile($form->getData());
  45.             $this->sendSavedMessage();
  46.             return $this->redirectToRoute('home');
  47.         }
  48.         return $this->render('dashboard/programs/operateri/profile.html.twig', [
  49.             'form' => $form->createView()
  50.         ]);
  51.     }
  52.     /**
  53.      * @return Response
  54.      * @Route("/operateri/index", name="operateri-index")
  55.      * @IsGranted("ROLE_ADMIN")
  56.      */
  57.     public function list()
  58.     {
  59.         $users $this->getManager()->getRepository(User::class)
  60.             ->getAllActive();
  61.         if ($this->searchFormValid()) {
  62.             $data $this->getSearchDataInput();
  63.             $users $this->getManager()->getRepository(User::class)
  64.                 ->search($data);
  65.         }
  66.         return $this->render('dashboard/programs/operateri/index.html.twig', [
  67.             'users' => $this->paginate($users$this->getRequest()),
  68.             'searchForm' => $this->createSearchView()
  69.         ]);
  70.     }
  71.     /**
  72.      * @Route("/operateri/novi", name="operateri-novi")
  73.      * @param UserService $service
  74.      * @param RoleEnum $enum
  75.      * @return Response
  76.      * @IsGranted("ROLE_ADMIN")
  77.      */
  78.     public function create(UserService $serviceRoleEnum $enum)
  79.     {
  80.         $user = new User();
  81.         $user->setCity($this->getCity());
  82.         $form $this->createForm(UserForm::class, $user, [
  83.             'validation_groups' => ['registration'],
  84.             'create' => true
  85.         ]);
  86.         $form->handleRequest($this->getRequest());
  87.         if ($form->isSubmitted() && $form->isValid()) {
  88.             $role $this->getRequest()->get('action-user-role');
  89.             $user $service->create($form->getData(), $role);
  90.             $this->sendSavedMessage();
  91.             if ($this->getStaySubmitButton()) {
  92.                 return $this->redirectToRoute('operateri-promjena', ['id' => $user->getId()]);
  93.             }
  94.             return $this->redirectToRoute('operateri-index');
  95.         }
  96.         return $this->render('dashboard/programs/operateri/detalji.html.twig', [
  97.             'form' => $form->createView(),
  98.             'user' => null,
  99.             'update' => false,
  100.             'roles' => $enum->getRoles()
  101.         ]);
  102.     }
  103.     /**
  104.      * @Route("/operateri/promjena/{id}", name="operateri-promjena")
  105.      * @param User $user
  106.      * @param UserService $service
  107.      * @param RoleEnum $enum
  108.      * @return Response
  109.      * @IsGranted("ROLE_ADMIN")
  110.      */
  111.     public function update(User $userUserService $serviceRoleEnum $enum)
  112.     {
  113.         $form $this->createForm(UserForm::class, $user, [
  114.             'create' => false,
  115.             'validation_groups' => ['update']
  116.         ]);
  117.         $form->handleRequest($this->getRequest());
  118.         if ($form->isSubmitted() && $form->isValid()) {
  119.             $role $this->getRequest()->get('action-user-role');
  120.             $user $service->update($form->getData(), $role);
  121.             $this->sendSavedMessage();
  122.             if ($this->getStaySubmitButton()) {
  123.                 return $this->redirectToRoute('operateri-promjena', ['id' => $user->getId()]);
  124.             }
  125.             return $this->redirectToRoute('operateri-index');
  126.         }
  127.         return $this->render('dashboard/programs/operateri/detalji.html.twig', [
  128.             'form' => $form->createView(),
  129.             'user' => $user,
  130.             'update' => true,
  131.             'roles' => $enum->getRoles()
  132.         ]);
  133.     }
  134.     /**
  135.      * @return Response
  136.      * @Route("/autocomplete/pretrazi", name="pretrazivanje_korisnika", defaults={"_format"="json"}, methods={"GET"})
  137.      */
  138.     public function autocomplete(): Response
  139.     {
  140.         $qs $this->getRequest()->query->get('q'$this->getRequest()->query->get('term'''));
  141.         $results $this->getManager()
  142.             ->getRepository(User::class)
  143.             ->autoComplete($qs);
  144.         return $this->render('dashboard/programs/natjecaji/provoditelj/autocomplete/clanovi_povjerenstva_autocomplete.html.twig', ['users' => $results]);
  145.     }
  146.     /**
  147.      * @param null $id
  148.      * @return Response
  149.      * @Route("/pretrazivanje-korisnika/{id}", name="pretrazivanje_korisnika_get")
  150.      */
  151.     public function find($id null): Response
  152.     {
  153.         $user $this->getManager()
  154.             ->getRepository(User::class)
  155.             ->find($id);
  156.         return new Response($user->getFullName());
  157.     }
  158.     /**
  159.      * @return Response
  160.      * @Route("/autocomplete/pretrazi-prijavitelje", name="pretrazivanje_korisnika_prijavitelja", defaults={"_format"="json"}, methods={"GET"})
  161.      */
  162.     public function autocompleteApplicant(): Response
  163.     {
  164.         $qs $this->getRequest()->query->get('q'$this->getRequest()->query->get('term'''));
  165.         $results $this->getManager()
  166.             ->getRepository(User::class)
  167.             ->autocompleteApplicant($qs);
  168.         return $this->render('dashboard/programs/ugovori/provoditelj/autocomplete_user.html.twig', ['users' => $results]);
  169.     }
  170.     /**
  171.      * @param null $id
  172.      * @return Response
  173.      * @Route("/pretrazivanje-prijavitelja/{id}", name="pretrazivanje_prijavitelja_get")
  174.      */
  175.     public function findApplicant($id null): Response
  176.     {
  177.         $user $this->getManager()
  178.             ->getRepository(User::class)
  179.             ->find($id);
  180.         return new Response($user->getFullName());
  181.     }
  182.     /**
  183.      * @Route("/operateri/brisanje/{id}", name="operateri-brisanje")
  184.      * @param User $user
  185.      * @param UserService $service
  186.      * @IsGranted("ROLE_ADMIN")
  187.      * @return RedirectResponse
  188.      */
  189.     public function deactivate(User $userUserService $service)
  190.     {
  191.         $service->deactivate($user);
  192.         $this->sendDeletedMessage();
  193.         return $this->redirectToRoute('operateri-index');
  194.     }
  195. }