src/Controller/FrontBulletinController.php line 105

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\UserBulletinRepository;
  7. use Doctrine\ORM\Tools\Pagination\Paginator;
  8. use Kematjaya\UserBundle\Repo\KmjUserRepository;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Response;
  13. /**
  14.  * Description of BulletinController
  15.  * @Route("/", name="front_bulletin_")
  16.  * @author programmer
  17.  */
  18. class FrontBulletinController extends AbstractController
  19. {
  20.     private $bulletinRepository;
  21.     private $artikelRepository;
  22.     private $dokRepository;
  23.     private $kmjUserRepository;
  24.     private UserBulletinRepository $userBulletinRepository;
  25.     public function __construct(
  26.         BulletinRepository $bulletinRepository
  27.         ArtikelRepository $artikelRepository,
  28.         UserBulletinRepository $userBulletinRepository ,
  29.         KmjUserRepository $kmjUserRepo,
  30.         DokumentasiRepository $dokRepository)
  31.     {
  32.         $this->bulletinRepository $bulletinRepository;
  33.         $this->artikelRepository $artikelRepository;
  34.         $this->userBulletinRepository $userBulletinRepository;
  35.         $this->dokRepository $dokRepository;
  36.         $this->kmjUserRepository $kmjUserRepo;
  37.     }
  38.     /**
  39.      * @Route("bulletin.json", name="index", methods={"GET"})
  40.      */
  41.     public function index(Request $request):Response
  42.     {
  43.         $content $this->jsonToArray($request->getContent());
  44.         $page $content['page'];
  45.         $limit $content['limit'];
  46.         $filters $content['filter'];
  47.         $queryWhere "a.id is not null" ;
  48.         foreach($filters as $k => $v) {
  49.             if(is_numeric($v)) {
  50.                 $queryWhere .= " AND a.".$k." = '".$v."'";
  51.             }else{
  52.                 $queryWhere .= " AND LOWER(a.".$k.") LIKE '%".strtolower($v)."%'";
  53.             }
  54.         }
  55.         $query $this->bulletinRepository->createQueryBuilder('a')
  56.             ->where($queryWhere)
  57.             ->getQuery();
  58.         $paginator = new Paginator($query);
  59.         $totalItems count($paginator);
  60.         $pagesCount ceil($totalItems $limit);
  61.         $paginator ->getQuery()->setFirstResult($limit * ($page-1))->setMaxResults($limit);
  62.         $result = [];
  63.         foreach ($paginator as $Data)
  64.         {
  65.             $artikels $this->artikelRepository->findByBulletinId($Data->getId());
  66.             $data_art = [];
  67.             foreach ($artikels as $key => $artikel) {
  68.                 $data_art[$key]['judul'] = $artikel->getJudul();
  69.                 $data_art[$key]['isi'] = $artikel->getIsi();
  70.                 $data_art[$key]['penulis'] = $artikel->getPenulis();
  71.                 $data_art[$key]['tanggal'] = $artikel->getTanggal();
  72.                 $data_art[$key]['dokumentasi'] = $this->artikelRepository->getDokumentasis($artikel->getId(),$request);
  73.             }
  74.             $result['page'] = $page;
  75.             $result['total_item'] = $totalItems;
  76.             $result['total_page'] = $pagesCount;
  77.             $result['content'][] = array(
  78.                 'id' => $Data -> getId(),
  79.                 'kode' => $Data -> getKode(),
  80.                 'edisi' => $Data -> getEdisi(),
  81.                 'nama' => $Data -> getNama(),
  82.                 'tanggal' => $Data -> getTanggal(),
  83.                 'tag' => $Data -> getTag(),
  84.                 'files' => $this->bulletinRepository->getDokumentasis($Data->getId(), $request),
  85.                 'cabangs' => $this->bulletinRepository->getBulletinWhereCabangs($Data),
  86.                 'artikel' => $data_art
  87.             );
  88.         }
  89.         return $this -> json($result);
  90.     }
  91.     /**
  92.      * @Route("bulletin-x.json", name="index_react", methods={"GET"})
  93.      */
  94.     public function index_react(Request $request):Response
  95.     {
  96.         if($request->get('user_id'))
  97.         {
  98.             $KmjUser $this->kmjUserRepository->find($request->get('user_id'));
  99.         }
  100.         $page = ($request->get('page')) ? $request->get('page') : ;
  101.         $limit = ($request->get('limit')) ? $request->get('limit') : ;
  102.         $filters $request->get('filter');
  103.         $queryWhere "a.id is not null" ;
  104.         if($filters) {
  105.             foreach($filters as $k => $v) {
  106.                 if(is_numeric($v)) {
  107.                     $queryWhere .= " AND a.".$k." = '".$v."'";
  108.                 }else{
  109.                     $queryWhere .= " AND LOWER(a.".$k.") LIKE '%".strtolower($v)."%'";
  110.                 }
  111.             }
  112.         }
  113.         $query $this->bulletinRepository->createQueryBuilder('a')
  114.             ->where($queryWhere)
  115.             ->getQuery();
  116.         $paginator = new Paginator($query);
  117.         $totalItems count($paginator);
  118.         $pagesCount ceil($totalItems $limit);
  119.         $paginator ->getQuery()->setFirstResult($limit * ($page-1))->setMaxResults($limit);
  120.         $result = [];
  121.         foreach ($paginator as $Data)
  122.         {
  123.             $artikels $this->artikelRepository->findByBulletinId($Data->getId());
  124.             $isMyBulletin = ($request->get('user_id') && $this->userBulletinRepository->findOneBy(['kmj_user'=>$KmjUser,'bulletin'=>$Data]))?1:0;
  125.             
  126.             $data_art = [];
  127.             foreach ($artikels as $key => $artikel) {
  128.                 $data_art[$key]['judul'] = $artikel->getJudul();
  129.                 $data_art[$key]['isi'] = $artikel->getIsi();
  130.                 $data_art[$key]['penulis'] = $artikel->getPenulis();
  131.                 $data_art[$key]['tanggal'] = $artikel->getTanggal();
  132.                 $data_art[$key]['dokumentasi'] = $this->artikelRepository->getDokumentasis($artikel->getId(),$request);
  133.             }
  134.             $result['page'] = $page;
  135.             $result['total_item'] = $totalItems;
  136.             $result['total_page'] = $pagesCount;
  137.             $result['content'][] = array(
  138.                 'id' => $Data -> getId(),
  139.                 'kode' => $Data -> getKode(),
  140.                 'is_mybulletin' => $isMyBulletin,
  141.                 'edisi' => $Data -> getEdisi(),
  142.                 'nama' => $Data -> getNama(),
  143.                 'tanggal' => $Data -> getTanggal(),
  144.                 'tag' => $Data -> getTag(),
  145.                 'files' => $this->bulletinRepository->getDokumentasis($Data->getId(), $request),
  146.                 'cabangs' => $this->bulletinRepository->getBulletinWhereCabangs($Data),
  147.                 'artikel' => $data_art
  148.             );
  149.         }
  150.         return $this -> json($result);
  151.     }
  152.     private function jsonToArray($content){
  153.         $request json_decode($content);
  154.         $request json_decode(json_encode($request),true);
  155.         return $request;
  156.     }
  157. }