Passed
Pull Request — 1.11.x (#4151)
by Angel Fernando Quiroz
09:24
created

RegistrantRepository::findByMeetingPaginated()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 9
c 0
b 0
f 0
dl 0
loc 14
rs 9.9666
cc 1
nc 1
nop 5
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\PluginBundle\Zoom;
6
7
use Chamilo\UserBundle\Entity\User;
8
use DateInterval;
9
use DateTime;
10
use Doctrine\ORM\EntityRepository;
11
12
/**
13
 * Class RegistrantEntityRepository.
14
 */
15
class RegistrantRepository extends EntityRepository
16
{
17
    /**
18
     * Returns the upcoming meeting registrations for the given user.
19
     *
20
     * @param User $user
21
     *
22
     * @return array|Registrant[]
23
     */
24
    public function meetingsComingSoonRegistrationsForUser($user)
25
    {
26
        $start = new DateTime();
27
        $end = new DateTime();
28
        $end->add(new DateInterval('P7D'));
29
        $meetings = $this->getEntityManager()->getRepository(Meeting::class)->periodMeetings($start, $end);
30
31
        return $this->findBy(['meeting' => $meetings, 'user' => $user]);
32
    }
33
34
    public function findByMeetingPaginated(Meeting $meeting, int $from, int $limit, string $column, string $direction)
35
    {
36
        $queryBuilder = $this->createQueryBuilder('r')
37
            ->join('r.user', 'u')
38
            ->leftJoin('r.signature', 's')
39
            ->where('r.meeting = :meeting')
40
            ->setFirstResult($from)
41
            ->setMaxResults($limit)
42
            ->orderBy($column, $direction)
43
        ;
44
45
        $queryBuilder->setParameter('meeting', $meeting);
46
47
        return $queryBuilder->getQuery()->getResult();
48
    }
49
}
50