src/Repository/FormationRegistrationRepository.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\FormationRegistration;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. /**
  7.  * @method FormationRegistration|null find($id, $lockMode = null, $lockVersion = null)
  8.  * @method FormationRegistration|null findOneBy(array $criteria, array $orderBy = null)
  9.  * @method FormationRegistration[]    findAll()
  10.  * @method FormationRegistration[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  11.  */
  12. class FormationRegistrationRepository extends ServiceEntityRepository
  13. {
  14.     public function __construct(ManagerRegistry $registry)
  15.     {
  16.         parent::__construct($registryFormationRegistration::class);
  17.     }
  18.     /**
  19.      * Get one formation by user and formation ID
  20.      * @param $user
  21.      * @param $formationId
  22.      * @return int|mixed|string|null
  23.      * @throws \Doctrine\ORM\NonUniqueResultException
  24.      */
  25.     public function userIsRegistered($user$formationId)
  26.     {
  27.         $queryBuilder $this->createQueryBuilder('f_r');
  28.         $query $queryBuilder
  29.             ->leftJoin('f_r.formation' 'f')
  30.             ->where('f_r.User = :user')->setParameter('user'$user)
  31.             ->andWhere('f_r.formation = :formation')->setParameter('formation',$formationId)
  32.             ->setMaxResults(1)
  33.         ;
  34.         return $query->getQuery()->getOneOrNullResult();
  35.     }
  36.     /**
  37.      * Get all user formation query for datatable
  38.      * @param $user
  39.      * @return \Doctrine\ORM\QueryBuilder
  40.      */
  41.     public function getAllRequiredBetweenDate($start,$end)
  42.     {
  43.         $queryBuilder $this->createQueryBuilder('f_r');
  44.         $result $queryBuilder
  45.             ->select('f.id as formationId')
  46.             ->addSelect('f.title as title')
  47.             ->addSelect('f.items as channels')
  48.             ->addSelect('o.email as authorEmail')
  49.             ->addSelect('o.firstname as authorFirstname')
  50.             ->addSelect(['u.lastname','u.firstname','u.email'])
  51.             ->addSelect(['u.id as userId'])
  52.             ->addSelect('f_r.id as formationRegistrationId')
  53.             ->leftJoin('f_r.formation' 'f')
  54.             ->leftJoin('f_r.User' 'u')
  55.             ->leftJoin('f.owner' 'o')
  56.             ->andWhere('f_r.createdAt BETWEEN :start AND :end')
  57.             ->setParameter('start'$start)
  58.             ->setParameter('end'$end)
  59.             ->andWhere('f.published = :published')->setParameter('published'1)
  60.             ->andWhere('f.notify = :notify')->setParameter('notify'1)
  61.             ->andWhere('f_r.viewed = :viewed')->setParameter('viewed'0)
  62.             ->getQuery()
  63.             ->getResult();
  64.         return $result;
  65.     }
  66.     /**
  67.      * Get all user formation query for datatable
  68.      * @param $user
  69.      * @return \Doctrine\ORM\QueryBuilder
  70.      */
  71.     public function getAllFormationsQueryByUser($user)
  72.     {
  73.         $queryBuilder $this->createQueryBuilder('f_r');
  74.         $query $queryBuilder
  75.             ->select('f.id')
  76.             ->addSelect('f.title as title')
  77.             ->addSelect('f.notify as required')
  78.             ->addSelect('f.updatedAt as lastUpdate')
  79.             ->addSelect('o.firstname as ownerFirstname')
  80.             ->addSelect('o.lastname as ownerLastname')
  81.             ->addSelect('r.name as role')
  82.             ->addSelect('f.slug as slug')
  83.             ->addSelect('f_r.viewed')
  84.             ->leftJoin('f_r.formation' 'f')
  85.             ->leftJoin('f.owner' 'o')
  86.             ->leftJoin('o.roles' 'r')
  87.             ->where('f_r.User = :user')->setParameter('user'$user)
  88.             ->andWhere('f.published = :published')->setParameter('published'1)
  89.         ;
  90.         return $query;
  91.     }
  92.     public function findPublishedCardsByUser($user): array
  93.     {
  94.         return $this->createQueryBuilder('f_r')
  95.             ->leftJoin('f_r.formation''f')
  96.             ->addSelect('f')
  97.             ->leftJoin('f.owner''o')
  98.             ->addSelect('o')
  99.             ->leftJoin('o.company''c')
  100.             ->addSelect('c')
  101.             ->where('f_r.User = :user')->setParameter('user'$user)
  102.             ->andWhere('f.published = :published')->setParameter('published'1)
  103.             ->andWhere('f_r.visible = :visible')->setParameter('visible'1)
  104.             ->orderBy('f.updatedAt''DESC')
  105.             ->addOrderBy('f.id''DESC')
  106.             ->getQuery()
  107.             ->getResult();
  108.     }
  109.     /**
  110.      * Get all user registration for one formation
  111.      * @param $user
  112.      * @return \Doctrine\ORM\QueryBuilder
  113.      */
  114.     public function getAllByFormation($formation)
  115.     {
  116.         $queryBuilder $this->createQueryBuilder('f_r');
  117.         $query $queryBuilder
  118.             ->leftJoin('f_r.User''u')
  119.             ->where('f_r.formation = :formation')->setParameter('formation'$formation)
  120.         ;
  121.         return $query->getQuery()->getResult();
  122.     }
  123.     /**
  124.      * Get all user registration for one formation
  125.      * @param $user
  126.      * @return \Doctrine\ORM\QueryBuilder
  127.      */
  128.     public function getAllFormationViewed($user,$onlyRH=false)
  129.     {
  130.         $queryBuilder $this->createQueryBuilder('f_r');
  131.         $query $queryBuilder
  132.             ->select('f.title')
  133.             ->addSelect('f.id')
  134.             ->addSelect('f_r.viewedAt')
  135.             ->addSelect('o.lastname as author_lastname')
  136.             ->addSelect('o.firstname  as author_firstname')
  137.             ->addSelect('c.name  as company_name')
  138.             ->leftJoin('f_r.formation''f')
  139.             ->leftJoin('f.owner''o')
  140.             ->leftJoin('o.roles''r')
  141.             ->leftJoin('o.company''c')
  142.             ->where('f_r.User = :user')->setParameter('user'$user)
  143.             ->andWhere('f_r.viewed = :viewed')->setParameter('viewed'true)
  144.         ;
  145.         if($onlyRH){
  146.             $query->andWhere('r.name = :role')->setParameter('role','ROLE_RH');
  147.         }
  148.         $query->orderBy('f_r.viewedAt''DESC');
  149.         return $query->getQuery()->getResult();
  150.     }
  151.     public function belongsToUser($user$id){
  152.         $queryBuilder $this->createQueryBuilder('f_r');
  153.         $query $queryBuilder
  154.             ->leftJoin('f_r.formation' 'f')
  155.             ->where('f.owner = :user')->setParameter('user'$user)
  156.             ->andWhere('f_r.formation = :formation')->setParameter('formation',$id)
  157.             ->setMaxResults(1)
  158.         ;
  159.         return $query->getQuery()->getOneOrNullResult();
  160.     }
  161.     public function findRegistrationByFormation($formation$count=true){
  162.         $queryBuilder $this->createQueryBuilder('f_r');
  163.         if($count){
  164.             $q $queryBuilder
  165.                 ->select('count(f_r.id) as count');
  166.         }
  167.         else{
  168.             $q $queryBuilder
  169.                 ->select('f_r.createdAt as date,u.email,u.firstname,u.lastname')
  170.                 ->leftJoin('f_r.User','u');
  171.         }
  172.         $q
  173.         ->where('f_r.formation = :formation')->setParameter('formation',$formation);
  174. //        ->andWhere('f_r.emailSent = :email_sent')->setParameter('email_sent',1);
  175.         if($count){
  176.             return $q->getQuery()->getSingleScalarResult();
  177.         }
  178.         return $q->getQuery()->getResult();
  179.     }
  180.     public function findRegistrationViewedByFormation($formation,$count=true,$viewed=1){
  181.         $queryBuilder $this->createQueryBuilder('f_r');
  182.         if($count){
  183.             $q $queryBuilder
  184.                 ->select('count(f_r.id) as count');
  185.         }
  186.         else{
  187.             $q $queryBuilder
  188.                 ->select('f_r.viewedAt as date,u.email,u.firstname,u.lastname')
  189.                 ->leftJoin('f_r.User','u');
  190.         }
  191.         $q
  192.             ->where('f_r.formation = :formation')->setParameter('formation',$formation)
  193. //            ->andWhere('f_r.emailSent = :email_sent')->setParameter('email_sent',1)
  194.             ->andWhere('f_r.viewed = :viewed')->setParameter('viewed',$viewed);
  195.         if($count){
  196.             return $q->getQuery()->getSingleScalarResult();
  197.         }
  198.         return $q->getQuery()->getResult();
  199.     }
  200.     public function findRegistrationOpenedByFormation($formation,$count=true,$opened=1){
  201.         $queryBuilder $this->createQueryBuilder('f_r');
  202.         if($count){
  203.             $q $queryBuilder
  204.                 ->select('count(f_r.id) as count');
  205.         }
  206.         else{
  207.             $q $queryBuilder
  208.                 ->select('f_r.openedAt as date,u.email,u.firstname,u.lastname')
  209.                 ->leftJoin('f_r.User','u');
  210.         }
  211.         $q
  212.             ->where('f_r.formation = :formation')->setParameter('formation',$formation)
  213. //            ->andWhere('f_r.emailSent = :email_sent')->setParameter('email_sent',1)
  214.             ->andWhere('f_r.opened = :opened')->setParameter('opened',$opened);
  215.         if($count){
  216.             return $q->getQuery()->getSingleScalarResult();
  217.         }
  218.         return $q->getQuery()->getResult();
  219.     }
  220. }