src/Controller/FrontSlideController.php line 77

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\ArtikelRepository;
  4. use App\Repository\BulletinRepository;
  5. use App\Repository\DokumentasiRepository;
  6. use App\Repository\SlideRepository;
  7. use Doctrine\ORM\Tools\Pagination\Paginator;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Response;
  12. /**
  13.  * Description of SlideController
  14.  * @Route("/", name="front_slide_")
  15.  * @author programmer
  16.  */
  17. class FrontSlideController extends AbstractController
  18. {
  19.     private $slideRepository;
  20.     private $dokRepository;
  21.     public function __construct(SlideRepository $slideRepository,  DokumentasiRepository $dokRepository)
  22.     {
  23.         $this->slideRepository $slideRepository;
  24.         $this->dokRepository $dokRepository;
  25.     }
  26.     /**
  27.      * @Route("slide.json", name="index", methods={"GET"})
  28.      */
  29.     public function index(Request $request):Response
  30.     {
  31.         $content $this->jsonToArray($request->getContent());
  32.         $page $content['page'];
  33.         $limit $content['limit'];
  34.         $filters $content['filter'];
  35.         $queryWhere "a.id is not null" ;
  36.         foreach($filters as $k => $v) {
  37.             if(is_int($v)) {
  38.                 $queryWhere .= " AND a.".$k." = '".$v."'";
  39.             }else{
  40.                 $queryWhere .= " AND LOWER(a.".$k.") LIKE '%".strtolower($v)."%'";
  41.             }
  42.         }
  43.         $query $this->slideRepository->createQueryBuilder('a')
  44.             ->where($queryWhere)
  45.             ->getQuery();
  46.         $paginator = new Paginator($query);
  47.         $totalItems count($paginator);
  48.         $pagesCount ceil($totalItems $limit);
  49.         $paginator ->getQuery()->setFirstResult($limit * ($page-1))->setMaxResults($limit);
  50.         $result = [];
  51.         foreach ($paginator as $Data)
  52.         {
  53.             $result['page'] = $page;
  54.             $result['total_item'] = $totalItems;
  55.             $result['total_page'] = $pagesCount;
  56.             $result['content'][] = array(
  57.                 'id' => $Data -> getId(),
  58.                 'judul' => $Data -> getJudul(),
  59.                 'deskripsi' => $Data -> getDeskripsi(),
  60.                 'cover' => $this->slideRepository->getDokumentasis($Data->getId(), $request)
  61.             );
  62.         }
  63.         return $this -> json($result);
  64.     }
  65.     /**
  66.      * @Route("slide-x.json", name="slide_react", methods={"GET"})
  67.      */
  68.     public function index_react(Request $request):Response
  69.     {
  70.         $page = ($request->get('page')) ? $request->get('page') : ;
  71.         $limit = ($request->get('limit')) ? $request->get('limit') : ;
  72.         $filters $request->get('filter');
  73.         $queryWhere "a.id is not null" ;
  74.         if($filters) {
  75.             foreach($filters as $k => $v) {
  76.                 if($k == 'id') {
  77.                     $queryWhere .= " AND a.".$k." = '".$v."'";
  78.                 }else{
  79.                     $queryWhere .= " AND LOWER(a.".$k.") LIKE '%".strtolower($v)."%'";
  80.                 }
  81.             }
  82.         }
  83.         $query $this->slideRepository->createQueryBuilder('a')
  84.             ->where($queryWhere)
  85.             ->getQuery();
  86.         $paginator = new Paginator($query);
  87.         $totalItems count($paginator);
  88.         $pagesCount ceil($totalItems $limit);
  89.         $paginator ->getQuery()->setFirstResult($limit * ($page-1))->setMaxResults($limit);
  90.         $result = [];
  91.         foreach ($paginator as $Data)
  92.         {
  93.             $result['page'] = $page;
  94.             $result['total_item'] = $totalItems;
  95.             $result['total_page'] = $pagesCount;
  96.             $result['content'][] = array(
  97.                 'id' => $Data -> getId(),
  98.                 'judul' => $Data -> getJudul(),
  99.                 'deskripsi' => $Data -> getDeskripsi(),
  100.                 'cover' => $this->slideRepository->getDokumentasis($Data->getId(), $request)
  101.             );
  102.         }
  103.         return $this -> json($result);
  104.     }
  105.     private function jsonToArray($content){
  106.         $request json_decode($content);
  107.         $request json_decode(json_encode($request),true);
  108.         return $request;
  109.     }
  110. }