src/Repository/Webfactory/Actualites/WebfactoryActualiteRepository.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Repository\Webfactory\Actualites;
  3. use App\Entity\Webfactory\Actualites\WebfactoryActualite;
  4. use App\Entity\Webfactory\Actualites\WebfactoryActualiteCategory;
  5. use App\Entity\Webfactory\Actualites\WebfactoryActualiteContenu;
  6. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  7. use Doctrine\ORM\Query\Expr\Join;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. /**
  10.  * @extends ServiceEntityRepository<WebfactoryActualite>
  11.  *
  12.  * @method WebfactoryActualite|null find($id, $lockMode = null, $lockVersion = null)
  13.  * @method WebfactoryActualite|null findOneBy(array $criteria, array $orderBy = null)
  14.  * @method WebfactoryActualite[]    findAll()
  15.  * @method WebfactoryActualite[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  16.  */
  17. class WebfactoryActualiteRepository extends ServiceEntityRepository
  18. {
  19.     public function __construct(ManagerRegistry $registry)
  20.     {
  21.         parent::__construct($registryWebfactoryActualite::class);
  22.     }
  23.     /**
  24.      * Factory Api widget Actualités : Retourne les articles de l'adh en fonction de la catégorie et de la pagination
  25.      * @param $adherent
  26.      * @param null $start
  27.      * @param null $limit
  28.      * @param $category
  29.      * @param string $lang
  30.      * @return array
  31.      */
  32.     public function paginateArticlesByCategory($adherent$start null$limit null$categorystring $lang 'fr'): array
  33.     {
  34.         $queryBuilder $this->createQueryBuilder('a')
  35.             ->join(WebfactoryActualiteCategory::class, 'categ'Join::WITH'a.actualiteCategory = categ.id')
  36.             ->where('a.adherent = :adherent')
  37. //            ->andWhere('a.lang = :lang')
  38.             ->andWhere('categ.id = :categ')
  39.             ->andWhere('a.active = :active')
  40.             ->orderBy('a.updated_at''DESC')
  41.             ->setParameters([
  42.                 'adherent' => $adherent,
  43. //                'lang' => $lang,
  44.                 'categ' => $category,
  45.                 "active" => 1
  46.             ]);
  47.         $allArticles $queryBuilder->getQuery()->getResult();
  48.         if (!is_null($start) && !is_null($limit)) {
  49.             $queryBuilder
  50.                 ->setMaxResults($limit)
  51.                 ->setFirstResult($start);
  52.         }
  53.         $paginateArticles $queryBuilder->getQuery()->getResult();
  54.         return ['count' => count($allArticles), 'articles' => $paginateArticles];
  55.     }
  56.     public function findLastActu($adherent$limit null): array
  57.     {
  58.         $queryBuilder $this->createQueryBuilder('a')
  59.             ->where('a.adherent = :adherent')
  60.             ->andWhere('a.active = :active')
  61.             ->setParameter("active"1)
  62.             ->orderBy('a.updated_at''DESC')
  63.             ->setParameter('adherent'$adherent);
  64.         $queryBuilder->setMaxResults($limit);
  65.         return $queryBuilder->getQuery()->getResult();
  66.     }
  67.     public function findByLang($adherentstring $lang): array
  68.     {
  69.         $queryBuilder $this->createQueryBuilder('a')
  70.             ->join('a.webfactoryActualiteContenus''wac')
  71.             ->where('a.adherent = :adherent')
  72.             ->setParameters([
  73.                 'adherent' => $adherent
  74.             ])
  75.             ->orderBy('wac.updated_at''desc');
  76.         return $queryBuilder->getQuery()->getResult();
  77.     }
  78.     public function countActuCustom($adherent): int
  79.     {
  80.         $queryBuilder $this->createQueryBuilder('a')
  81.             ->select('COUNT(a.id)')
  82.             ->where('a.adherent = :adherent')
  83.             ->andWhere('a.active = :active')
  84.             ->andWhere('a.articleBibliotheque IS NULL')
  85.             ->setParameter("active"1)
  86.             ->setParameter('adherent'$adherent);
  87.         return $queryBuilder->getQuery()->getSingleScalarResult();
  88.     }
  89.     public function findCateByLang($idstring $lang)
  90.     {
  91.         $queryBuilder $this->createQueryBuilder('a')
  92.             ->select('acc.name, acc.id, acc.lang')
  93.             ->join('a.actualiteCategory''ac''ac.webfactoryActualites')
  94.             ->join('ac.webfactoryActualiteCategoryContenus''acc''acc.webfactory_category')
  95.             ->where('a.id = :id')
  96.             ->andWhere('a.active = :active')
  97.             ->andWhere('acc.lang = :lang')
  98.             ->setParameters(['id' => $id'active' => 1'lang' => $lang])
  99.             ->orderBy('ac.updated_at''desc');
  100.         return current($queryBuilder->getQuery()->getResult());
  101.     }
  102. }