Completed
Push — master ( 410c5e...621de0 )
by Emil
07:36
created

TaskManager::save()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace Glooby\TaskBundle\Manager;
4
5
use Doctrine\Common\Persistence\ManagerRegistry;
6
use Doctrine\ORM\NoResultException;
7
use Glooby\TaskBundle\Entity\QueuedTask;
8
use Glooby\TaskBundle\Entity\ScheduleRepository;
9
use Glooby\TaskBundle\Model\QueuedTaskInterface;
10
11
/**
12
 * @author Emil Kilhage
13
 */
14
class TaskManager
15
{
16
    /**
17
     * @var ManagerRegistry
18
     */
19
    protected $doctrine;
20
21
    /**
22
     * @param ManagerRegistry $doctrine
23
     */
24
    public function setDoctrine($doctrine)
25
    {
26
        $this->doctrine = $doctrine;
27
    }
28
29
    /**
30
     * @param string $service
31
     * @param \DateTime|null $executeAt
32
     * @param array|null $params
33
     * @return QueuedTaskInterface
34
     */
35
    public function queue($service, \DateTime $executeAt = null, array $params = null)
36
    {
37
        $task = new QueuedTask($service, $params, $executeAt);
38
        $this->populateSchedule($task, $service);
39
        $this->doctrine->getManager()->persist($task);
40
        return $task;
41
    }
42
43
    /**
44
     * @param QueuedTaskInterface $task
45
     */
46
    public function start(QueuedTaskInterface $task)
47
    {
48
        $task->start();
49
    }
50
51
    /**
52
     * @param string $service
53
     * @param array $params
54
     * @return QueuedTaskInterface
55
     */
56
    public function run($service, array $params = null)
57
    {
58
        $task = new QueuedTask($service, $params);
59
        $task->start();
60
        $this->populateSchedule($task, $service);
61
62
        $this->doctrine->getManager()->persist($task);
63
        $this->save($task);
64
65
        return $task;
66
    }
67
68
    /**
69
     * @param QueuedTaskInterface $task
70
     * @param $response
71
     */
72
    public function success(QueuedTaskInterface $task, $response)
73
    {
74
        $task->success($response);
75
        $this->save($task);
76
    }
77
78
    /**
79
     * @param QueuedTaskInterface $task
80
     * @param $response
81
     */
82
    public function failure(QueuedTaskInterface $task, $response)
83
    {
84
        $task->failure($response);
85
        $this->save($task);
86
    }
87
88
    /**
89
     * @param QueuedTaskInterface $task
90
     * @param string $service
91
     */
92
    private function populateSchedule(QueuedTaskInterface $task, $service)
93
    {
94
        try {
95
            /** @var ScheduleRepository $repo */
96
            $repo = $this->doctrine->getManager()
97
                ->getRepository('GloobyTaskBundle:Schedule');
98
            $schedule = $repo->findByName($service);
99
            $task->setSchedule($schedule);
100
        } catch (NoResultException $e) {
101
            // ignore if not found
102
        }
103
    }
104
105
    /**
106
     * @param QueuedTaskInterface $task
107
     */
108
    private function save(QueuedTaskInterface $task)
0 ignored issues
show
Unused Code introduced by
The parameter $task is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
109
    {
110
        $this->doctrine->getManager()->flush();
111
    }
112
}
113