src/Controller/Website/UserController.php line 101

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Website;
  3. use App\Repository\SuluUsersRepository;
  4. use Sulu\Bundle\SearchBundle\Controller\WebsiteSearchController;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Twig\Environment;
  8. use App\Service\ApiSearchService;
  9. use ONGR\ElasticsearchBundle\Service\Manager;
  10. use ONGR\ElasticsearchDSL\Query\TermLevel\TermQuery;
  11. use ONGR\ElasticsearchDSL\Sort\FieldSort;
  12. use Sulu\Bundle\ArticleBundle\Document\ArticleViewDocument;
  13. use Symfony\Component\Security\Core\Security;
  14. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  15. use Symfony\Component\HttpFoundation\RedirectResponse;
  16. class UserController extends WebsiteSearchController
  17. {
  18.     private Environment $twig;
  19.     private SuluUsersRepository $sur;
  20.     private $apiSearchService;
  21.     private Security $security;
  22.     private UrlGeneratorInterface $urlGenerator;
  23.     private Manager $esManagerLive;
  24.     public function __construct(
  25.         Environment $twig,
  26.         SuluUsersRepository $sur,
  27.         ApiSearchService $apiSearchService,
  28.         Security $security,
  29.         UrlGeneratorInterface $urlGenerator,
  30.         Manager $esManagerLive
  31.     ) {
  32.         $this->twig $twig;
  33.         $this->sur $sur;
  34.         $this->apiSearchService $apiSearchService;
  35.         $this->security $security;
  36.         $this->urlGenerator $urlGenerator;
  37.         $this->esManagerLive $esManagerLive;
  38.     }
  39.     /**
  40.      * Obtiens les informations d'un utilisateur par son id
  41.      *
  42.      * @param integer $id
  43.      * @return Response 
  44.      */
  45.     public function getUserByIdAction($id): Response
  46.     {
  47.         $user $this->sur->findOneByContactId($id);
  48.         $actual_user =  $this->security->getUser();
  49.         $events $this->loadArticles($id"agenda");
  50.         $articles $this->loadArticles($id"articles");
  51.         $aap $this->loadArticles($id"aapami");
  52.         $offres $this->loadArticles($id"offres");
  53.         if (is_null($actual_user)) {
  54.             $loginUrl $this->urlGenerator->generate('sulu_community.login');
  55.             return new RedirectResponse($loginUrl);
  56.         }
  57.         if (empty($user) || !$user->getContact()->getVisibleAnnuaire()) {
  58.             //$loginUrl = $this->urlGenerator->generate('/acteurs-territoires/annuaire');
  59.             return new RedirectResponse('/acteurs-territoires/annuaire');
  60.         }
  61.         $response = new Response(
  62.             $this->twig->render(
  63.                 'users/singleUser.html.twig',
  64.                 array('user' => $user'events' => $events'articles' => $articles'aap' => $aap'offres' => $offres)
  65.             )
  66.         );
  67.         return $response;
  68.     }
  69.     private function loadArticles($id$structureType)
  70.     {
  71.         $repository $this->getRepository();
  72.         $search $repository->createSearch()
  73.             ->addSort(new FieldSort('published'FieldSort::DESC))
  74.             ->addQuery(new TermQuery('author_id'$id))
  75.             ->addQuery(new TermQuery('structure_type'$structureType));
  76.         return $repository->findDocuments($search);
  77.     }
  78.     /**
  79.      * @return Repository
  80.      */
  81.     private function getRepository()
  82.     {
  83.         return $this->esManagerLive->getRepository(ArticleViewDocument::class);
  84.     }
  85.     /**
  86.      * Va chercher tous les utilisateurs qui sont des utilisateurs visible sur l'annuaire
  87.      *
  88.      * @return Response 
  89.      */
  90.     public function getUserListAction(Request $request): Response
  91.     {
  92.         $query $this->getRequestParameter($request'q'false'');
  93.         $elems $this->getRequestParameter($request'elems'false'');
  94.         $territoires $this->getRequestParameter($request'territoires'false'');
  95.         $departement $this->getRequestParameter($request'departement'false'');
  96.         $thematiques $this->getRequestParameter($request'theme'false'');
  97.         $typologieActeur $this->getRequestParameter($request'typologieActeur'false'');
  98.         $order $this->getRequestParameter($request'order'false'');
  99.         $step $this->getRequestParameter($request'step'false'');
  100.         /*  $elems = $this->getRequestParameter($request, 'elems', false, ''); */
  101.         $page $this->getRequestParameter($request'page'false'');
  102.         $page = ($page $page 1);
  103.         $offset 0;
  104.         $request $this->sur->getUserList($query$territoires$departement$thematiques$typologieActeur$order$step);
  105.         $nbPages $this->apiSearchService->nbPages($elemscount($request));
  106.         if ($page == 1) {
  107.             array_splice($request$elems);
  108.         } elseif ($page != null && intval($page) > 1) {
  109.             $offset $elems * ($page 1);
  110.             array_splice($request0$offset);
  111.         }
  112.         $response = new Response($this->twig->render(
  113.             'users/userList.html.twig',
  114.             array(
  115.                 'request' => $request,
  116.                 'pageCount' => $nbPages,
  117.                 'currentPage' => $page,
  118.             )
  119.         ));
  120.         return $response;
  121.     }
  122. }