src/Repository/SignedFormRepository.php line 68

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\SignedForm;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. use App\Classes\StudentFilter;
  7. /**
  8.  * @extends ServiceEntityRepository<SignedForm>
  9.  *
  10.  * @method SignedForm|null find($id, $lockMode = null, $lockVersion = null)
  11.  * @method SignedForm|null findOneBy(array $criteria, array $orderBy = null)
  12.  * @method SignedForm[]    findAll()
  13.  * @method SignedForm[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  14.  */
  15. class SignedFormRepository extends ServiceEntityRepository
  16. {
  17.     public function __construct(ManagerRegistry $registry)
  18.     {
  19.         parent::__construct($registry, SignedForm::class);
  20.     }
  21.     public function save(SignedForm $entity, bool $flush = false): void
  22.     {
  23.         $this->getEntityManager()->persist($entity);
  24.         if ($flush) {
  25.             $this->getEntityManager()->flush();
  26.         }
  27.     }
  28.     public function remove(SignedForm $entity, bool $flush = false): void
  29.     {
  30.         $this->getEntityManager()->remove($entity);
  31.         if ($flush) {
  32.             $this->getEntityManager()->flush();
  33.         }
  34.     }
  35.     
  36.     public function getDocuments(StudentFilter $filter = null, int $page = 1, int $limit = 20)
  37.     {
  38.         $page = max(1, $page);
  39.         $limit = max(1, $limit);
  40.         
  41.         $qb = $this->createQueryBuilder('c')
  42.                 ->addOrderBy('c.signeddate', 'desc');
  43.         
  44.         if ($filter && $filter->getStudent()) {
  45.             $qb->andWhere('c.student = :filterStudent')
  46.                     ->setParameter('filterStudent', $filter->getStudent());
  47.         }
  48.         
  49.         if ($filter && $filter->getClubform()) {
  50.             $qb->andWhere('c.clubform = :filterClubform')
  51.                     ->setParameter('filterClubform', $filter->getClubform());
  52.         }
  53.         
  54.         $qb->setFirstResult(($page - 1) * $limit)
  55.                 ->setMaxResults($limit);
  56.         return $qb->getQuery()->getResult();
  57.     }
  58.     
  59.     public function countDocuments(StudentFilter $filter = null): int
  60.     {
  61.         $qb = $this->createQueryBuilder('c')
  62.                 ->select('COUNT(c.id)');
  63.         
  64.         if ($filter && $filter->getStudent()) {
  65.             $qb->andWhere('c.student = :filterStudent')
  66.                     ->setParameter('filterStudent', $filter->getStudent());
  67.         }
  68.         
  69.         if ($filter && $filter->getClubform()) {
  70.             $qb->andWhere('c.clubform = :filterClubform')
  71.                     ->setParameter('filterClubform', $filter->getClubform());
  72.         }
  73.         
  74.         return (int) $qb->getQuery()->getSingleScalarResult();
  75.     }
  76. //    /**
  77. //     * @return SignedForm[] Returns an array of SignedForm objects
  78. //     */
  79. //    public function findByExampleField($value): array
  80. //    {
  81. //        return $this->createQueryBuilder('s')
  82. //            ->andWhere('s.exampleField = :val')
  83. //            ->setParameter('val', $value)
  84. //            ->orderBy('s.id', 'ASC')
  85. //            ->setMaxResults(10)
  86. //            ->getQuery()
  87. //            ->getResult()
  88. //        ;
  89. //    }
  90. //    public function findOneBySomeField($value): ?SignedForm
  91. //    {
  92. //        return $this->createQueryBuilder('s')
  93. //            ->andWhere('s.exampleField = :val')
  94. //            ->setParameter('val', $value)
  95. //            ->getQuery()
  96. //            ->getOneOrNullResult()
  97. //        ;
  98. //    }
  99. }