Completed
Push — master ( 5bb9e4...33b9a4 )
by Serhii
09:16 queued 09:08
created

findByDateRangeAndSlug()   B

Complexity

Conditions 3
Paths 4

Size

Total Lines 25
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 3.3332

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 3
eloc 16
c 1
b 1
f 0
nc 4
nop 4
dl 0
loc 25
rs 8.8571
ccs 2
cts 3
cp 0.6667
crap 3.3332
1
<?php
2
3
namespace AppBundle\Repository;
4
5
use AppBundle\Entity\PerformanceEvent;
6
use AppBundle\Exception\NotFoundException;
7 2
8
class PerformanceEventRepository extends AbstractRepository
9 2
{
10 2
    /**
11 2
     * @param \DateTime $fromDate
12 2
     * @param \DateTime $toDate
13 2
     * @param string $limit
14
     * @param null $performanceSlug
15
     * @return mixed
16 2
     */
17
    public function findByDateRangeAndSlug(
18
        \DateTime $fromDate,
19
        \DateTime $toDate,
20 2
        $limit = null,
21
        $performanceSlug = null
22 2
    ) {
23
        $qb = $this->createQueryBuilder('u')
24
            ->where('u.dateTime BETWEEN :from AND :to')
25
            ->setParameter('from', $fromDate->format('Y-m-d H:i'))
26
            ->setParameter('to', $toDate->format('Y-m-d H:i'))
27
            ->orderBy('u.dateTime', 'ASC')
28
        ;
29
30
        if ($limit) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $limit of type string|null is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
31
            $qb->setMaxResults($limit);
32
        }
33
34
        if ($performanceSlug) {
35
            $qb->join('u.performance', 'p')->andWhere('p.slug = :slug')->setParameter('slug', $performanceSlug);
36
        }
37
38
        $query = $qb->getQuery();
39
40
        return $query->execute();
41
    }
42
43
    /**
44
     * Get PerformanceEvent by ID
45
     *
46
     * @param int $id
47
     *
48
     * @return PerformanceEvent
49
     * @throws NotFoundException
50
     */
51
    public function getById(int $id): PerformanceEvent
52
    {
53
        /** @var PerformanceEvent $performanceEvent */
54
        $performanceEvent = $this->find($id);
55
        if (!$performanceEvent) {
56
            throw new NotFoundException('Performance Event not found by ID: '.$id);
57
        }
58
59
        return $performanceEvent;
60
    }
61
}
62