src/Repository/BlogRepository.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Blog;
  4. use Doctrine\ORM\EntityRepository;
  5. class BlogRepository extends EntityRepository
  6. {
  7.     /**
  8.      * ListarOrdenados: Lista los blogs para el front
  9.      *
  10.      *
  11.      * @return Blog[]
  12.      */
  13.     public function ListarOrdenados($empresa_id ''$order 'DESC'$start""$limit "")
  14.     {
  15.         $consulta $this->createQueryBuilder('b')
  16.             ->andWhere('b.estado = 1');
  17.         if ($empresa_id != '') {
  18.             $consulta->leftJoin('b.empresa''e')
  19.                 ->andWhere('e.empresaId = :empresa_id')
  20.                 ->setParameter('empresa_id'$empresa_id);
  21.         }
  22.         $consulta->orderBy('b.createdAt'$order);
  23.         if($start !== ''){
  24.             $consulta->setFirstResult($start);
  25.         }
  26.         if($limit !== '') {
  27.             $consulta->setMaxResults($limit);
  28.         }
  29.         return $consulta->getQuery()->getResult();
  30.     }
  31.     /**
  32.      * ListarBlogsDeEmpresa: Lista los blogs de una empresa
  33.      *
  34.      *
  35.      * @return Blog[]
  36.      */
  37.     public function ListarBlogsDeEmpresa($empresa_id)
  38.     {
  39.         $consulta $this->createQueryBuilder('b');
  40.         if ($empresa_id != '') {
  41.             $consulta->leftJoin('b.empresa''e')
  42.                 ->andWhere('e.empresaId = :empresa_id')
  43.                 ->setParameter('empresa_id'$empresa_id);
  44.         }
  45.         $consulta->orderBy('b.createdAt''ASC');
  46.         return $consulta->getQuery()->getResult();
  47.     }
  48.     /**
  49.      * ListarBlogsDeUsuario: Lista los blogs de un usuario
  50.      *
  51.      *
  52.      * @return Blog[]
  53.      */
  54.     public function ListarBlogsDeUsuario($usuario_id)
  55.     {
  56.         $consulta $this->createQueryBuilder('b');
  57.         if ($usuario_id != '') {
  58.             $consulta->leftJoin('b.autor''u')
  59.                 ->andWhere('u.usuarioId = :usuario_id')
  60.                 ->setParameter('usuario_id'$usuario_id);
  61.         }
  62.         $consulta->orderBy('b.createdAt''ASC');
  63.         return $consulta->getQuery()->getResult();
  64.     }
  65.     /**
  66.      * BuscarPorUrl
  67.      * @param $url
  68.      * @return Blog|object|null
  69.      */
  70.     public function BuscarPorUrl($url)
  71.     {
  72.         $criteria = array('url' => $url);
  73.         return $this->findOneBy($criteria);
  74.     }
  75.     /**
  76.      * ListarBlogs: Lista los blog
  77.      * @param int $start Inicio
  78.      * @param int $limit Limite
  79.      * @param string $sSearch Para buscar
  80.      *
  81.      * @return Blog[]
  82.      */
  83.     public function ListarBlogs($start$limit$sSearch$iSortCol_0$sSortDir_0,
  84.                                    $empresa_id "")
  85.     {
  86.         $consulta $this->createQueryBuilder('b')
  87.             ->leftJoin('b.empresa''e');
  88.         if ($sSearch != "") {
  89.             $consulta->andWhere('b.nombre LIKE :nombre OR b.descripcion LIKE :descripcion')
  90.                 ->setParameter('nombre'"%${sSearch}%")
  91.                 ->setParameter('descripcion'"%${sSearch}%");
  92.         }
  93.         if ($empresa_id != '') {
  94.             $consulta->andWhere('e.empresaId = :empresa_id')
  95.                 ->setParameter('empresa_id'$empresa_id);
  96.         }
  97.         if ($iSortCol_0 == 'empresa') {
  98.             $consulta->orderBy("e.nombre"$sSortDir_0);
  99.         } else {
  100.             $consulta->orderBy("b.$iSortCol_0"$sSortDir_0);
  101.         }
  102.         if ($limit 0) {
  103.             $consulta->setMaxResults($limit);
  104.         }
  105.         return $consulta->setFirstResult($start)
  106.             ->getQuery()->getResult();
  107.     }
  108.     /**
  109.      * TotalBlogs: Total de blog de la BD
  110.      * @param string $sSearch Para buscar
  111.      *
  112.      * @author Marcel
  113.      */
  114.     public function TotalBlogs($sSearch$empresa_id "")
  115.     {
  116.         $em $this->getEntityManager();
  117.         $consulta 'SELECT COUNT(b.blogId) FROM App\Entity\Blog b ';
  118.         $join ' LEFT JOIN b.empresa e ';
  119.         $where '';
  120.         if ($sSearch != "") {
  121.             $esta_query explode("WHERE"$where);
  122.             if (count($esta_query) == 1)
  123.                 $where .= 'WHERE (b.nombre LIKE :nombre OR b.descripcion LIKE :descripcion) ';
  124.             else
  125.                 $where .= 'AND (b.nombre LIKE :nombre OR b.descripcion LIKE :descripcion) ';
  126.         }
  127.         if ($empresa_id != "") {
  128.             $esta_query explode("WHERE"$where);
  129.             if (count($esta_query) == 1) {
  130.                 $where .= 'WHERE (e.empresaId = :empresa_id) ';
  131.             } else {
  132.                 $where .= ' AND (e.empresaId = :empresa_id) ';
  133.             }
  134.         }
  135.         $consulta .= $join;
  136.         $consulta .= $where;
  137.         $query $em->createQuery($consulta);
  138.         //Adicionar parametros        
  139.         //$sSearch        
  140.         $esta_query_nombre substr_count($consulta':nombre');
  141.         if ($esta_query_nombre == 1)
  142.             $query->setParameter('nombre'"%${sSearch}%");
  143.         $esta_query_descripcion substr_count($consulta':descripcion');
  144.         if ($esta_query_descripcion == 1)
  145.             $query->setParameter('descripcion'"%${sSearch}%");
  146.         $esta_query_empresa_id substr_count($consulta':empresa_id');
  147.         if ($esta_query_empresa_id == 1) {
  148.             $query->setParameter('empresa_id'$empresa_id);
  149.         }
  150.         return $query->getSingleScalarResult();
  151.     }
  152. }