Completed
Pull Request — master (#15)
by Wachter
10:36
created

TaskExecutionRepository::findByStartTime()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 11
rs 9.4285
cc 1
eloc 9
nc 1
nop 2
1
<?php
2
3
namespace Task\TaskBundle\Entity;
4
5
use Doctrine\ORM\EntityRepository;
6
use Task\Execution\TaskExecutionInterface;
7
use Task\Storage\TaskExecutionRepositoryInterface;
8
use Task\TaskInterface;
9
use Task\TaskStatus;
10
11
class TaskExecutionRepository extends EntityRepository implements TaskExecutionRepositoryInterface
12
{
13
    public function findByStartTime(TaskInterface $task, \DateTime $scheduleTime)
14
    {
15
        return $this->createQueryBuilder('e')
16
            ->innerJoin('e.task', 't')
17
            ->where('t.uuid = :uuid')
18
            ->andWhere('e.scheduleTime = :scheduleTime')
19
            ->setParameter('uuid', $task->getUuid())
20
            ->setParameter('scheduleTime', $scheduleTime)
21
            ->getQuery()
22
            ->getResult();
23
    }
24
25
    public function findScheduled(\DateTime $dateTime = null)
26
    {
27
        if ($dateTime === null) {
28
            $dateTime = new \DateTime();
29
        }
30
31
        return $this->createQueryBuilder('e')
32
            ->innerJoin('e.task', 't')
33
            ->where('e.status = :status AND e.scheduleTime < :dateTime')
34
            ->setParameter('status', TaskStatus::PLANNED)
35
            ->setParameter('dateTime', $dateTime)
36
            ->getQuery()
37
            ->getResult();
38
    }
39
40
    public function save(TaskExecutionInterface $execution)
41
    {
42
        $this->_em->flush();
43
    }
44
45
    public function add(TaskExecutionInterface $execution)
46
    {
47
        $this->_em->persist($execution);
48
        $this->_em->flush();
49
    }
50
}
51