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.             ->addSelect('d.name as service')
  85.             ->leftJoin('f_r.formation' 'f')
  86.             ->leftJoin('f.owner' 'o')
  87.             ->leftJoin('o.department' 'd')
  88.             ->leftJoin('o.roles' 'r')
  89.             ->where('f_r.User = :user')->setParameter('user'$user)
  90.             ->andWhere('f.published = :published')->setParameter('published'1)
  91.         ;
  92.         return $query;
  93.     }
  94.     /**
  95.      * Get all user registration for one formation
  96.      * @param $user
  97.      * @return \Doctrine\ORM\QueryBuilder
  98.      */
  99.     public function getAllByFormation($formation)
  100.     {
  101.         $queryBuilder $this->createQueryBuilder('f_r');
  102.         $query $queryBuilder
  103.             ->leftJoin('f_r.User''u')
  104.             ->where('f_r.formation = :formation')->setParameter('formation'$formation)
  105.         ;
  106.         return $query->getQuery()->getResult();
  107.     }
  108.     /**
  109.      * Get all user registration for one formation
  110.      * @param $user
  111.      * @return \Doctrine\ORM\QueryBuilder
  112.      */
  113.     public function getAllFormationViewed($user,$onlyRH=false)
  114.     {
  115.         $queryBuilder $this->createQueryBuilder('f_r');
  116.         $query $queryBuilder
  117.             ->select('f.title')
  118.             ->addSelect('f.id')
  119.             ->addSelect('f_r.viewedAt')
  120.             ->addSelect('o.lastname as author_lastname')
  121.             ->addSelect('o.firstname  as author_firstname')
  122.             ->addSelect('c.name  as company_name')
  123.             ->leftJoin('f_r.formation''f')
  124.             ->leftJoin('f.owner''o')
  125.             ->leftJoin('o.roles''r')
  126.             ->leftJoin('o.company''c')
  127.             ->where('f_r.User = :user')->setParameter('user'$user)
  128.             ->andWhere('f_r.viewed = :viewed')->setParameter('viewed'true)
  129.         ;
  130.         if($onlyRH){
  131.             $query->andWhere('r.name = :role')->setParameter('role','ROLE_RH');
  132.         }
  133.         $query->orderBy('f_r.viewedAt''DESC');
  134.         return $query->getQuery()->getResult();
  135.     }
  136.     public function belongsToUser($user$id){
  137.         $queryBuilder $this->createQueryBuilder('f_r');
  138.         $query $queryBuilder
  139.             ->leftJoin('f_r.formation' 'f')
  140.             ->where('f.owner = :user')->setParameter('user'$user)
  141.             ->andWhere('f_r.formation = :formation')->setParameter('formation',$id)
  142.             ->setMaxResults(1)
  143.         ;
  144.         return $query->getQuery()->getOneOrNullResult();
  145.     }
  146.     public function findRegistrationByFormation($formation$count=true){
  147.         $queryBuilder $this->createQueryBuilder('f_r');
  148.         if($count){
  149.             $q $queryBuilder
  150.                 ->select('count(f_r.id) as count');
  151.         }
  152.         else{
  153.             $q $queryBuilder
  154.                 ->select('f_r.createdAt as date,u.email,u.firstname,u.lastname')
  155.                 ->leftJoin('f_r.User','u');
  156.         }
  157.         $q
  158.         ->where('f_r.formation = :formation')->setParameter('formation',$formation);
  159. //        ->andWhere('f_r.emailSent = :email_sent')->setParameter('email_sent',1);
  160.         if($count){
  161.             return $q->getQuery()->getSingleScalarResult();
  162.         }
  163.         return $q->getQuery()->getResult();
  164.     }
  165.     public function findRegistrationViewedByFormation($formation,$count=true,$viewed=1){
  166.         $queryBuilder $this->createQueryBuilder('f_r');
  167.         if($count){
  168.             $q $queryBuilder
  169.                 ->select('count(f_r.id) as count');
  170.         }
  171.         else{
  172.             $q $queryBuilder
  173.                 ->select('f_r.viewedAt as date,u.email,u.firstname,u.lastname')
  174.                 ->leftJoin('f_r.User','u');
  175.         }
  176.         $q
  177.             ->where('f_r.formation = :formation')->setParameter('formation',$formation)
  178. //            ->andWhere('f_r.emailSent = :email_sent')->setParameter('email_sent',1)
  179.             ->andWhere('f_r.viewed = :viewed')->setParameter('viewed',$viewed);
  180.         if($count){
  181.             return $q->getQuery()->getSingleScalarResult();
  182.         }
  183.         return $q->getQuery()->getResult();
  184.     }
  185.     public function findRegistrationOpenedByFormation($formation,$count=true,$opened=1){
  186.         $queryBuilder $this->createQueryBuilder('f_r');
  187.         if($count){
  188.             $q $queryBuilder
  189.                 ->select('count(f_r.id) as count');
  190.         }
  191.         else{
  192.             $q $queryBuilder
  193.                 ->select('f_r.openedAt as date,u.email,u.firstname,u.lastname')
  194.                 ->leftJoin('f_r.User','u');
  195.         }
  196.         $q
  197.             ->where('f_r.formation = :formation')->setParameter('formation',$formation)
  198. //            ->andWhere('f_r.emailSent = :email_sent')->setParameter('email_sent',1)
  199.             ->andWhere('f_r.opened = :opened')->setParameter('opened',$opened);
  200.         if($count){
  201.             return $q->getQuery()->getSingleScalarResult();
  202.         }
  203.         return $q->getQuery()->getResult();
  204.     }
  205. }