Add::execute()   B
last analyzed

Complexity

Conditions 6
Paths 10

Size

Total Lines 49
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 28
nc 10
nop 2
dl 0
loc 49
rs 8.8497
c 0
b 0
f 0
1
<?php namespace Comodojo\Extender\Socket\Commands\Scheduler;
2
3
use \Comodojo\Extender\Schedule\Manager;
4
use \Comodojo\Daemon\Daemon;
5
use \Comodojo\RpcServer\Request\Parameters;
6
use \Comodojo\Extender\Socket\Messages\Task\Request as TaskRequestMessage;
7
use \Comodojo\Extender\Socket\Messages\Scheduler\Schedule as ScheduleMessage;
8
use \Comodojo\Extender\Task\Request as TaskRequest;
9
use \Comodojo\Extender\Orm\Entities\Schedule;
10
use \Cron\CronExpression;
11
use \Comodojo\Exception\RpcException;
12
use \Exception;
13
14
class Add {
15
16
    public static function execute(Parameters $params, Daemon $daemon) {
17
18
        $schedule_message = $params->get('schedule');
19
        $request_message = $params->get('request');
20
21
        if (empty($schedule_message['name']) || empty($schedule_message['expression'])) {
22
            throw new RpcException("Missing schedule name or invalid expression", -32600);
23
        }
24
25
        try {
26
27
            $request = TaskRequest::createFromMessage(
28
                TaskRequestMessage::createFromExport($request_message)
29
            );
30
31
        } catch (Exception $e) {
32
            throw new RpcException("Invalid message payload in request", -32600);
33
        }
34
35
        try {
36
37
            $schedule = new Schedule();
38
            $schedule->setName($schedule_message['name']);
39
            $schedule->setExpression(CronExpression::factory($schedule_message['expression']));
40
            $schedule->setDescription($schedule_message['description']);
41
            $schedule->setEnabled($schedule_message['enabled']);
42
            $schedule->setRequest($request);
43
44
        } catch (Exception $e) {
45
            throw new RpcException("Invalid message payload in schedule", -32600);
46
        }
47
48
        $manager = new Manager(
49
            $daemon->getConfiguration(),
0 ignored issues
show
Bug introduced by
The method getConfiguration() does not exist on Comodojo\Daemon\Daemon. It seems like you code against a sub-type of Comodojo\Daemon\Daemon such as Comodojo\Extender\ExtenderDaemon. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

49
            $daemon->/** @scrutinizer ignore-call */ 
50
                     getConfiguration(),
Loading history...
50
            $daemon->getLogger(),
51
            $daemon->getEvents()
52
        );
53
54
        try {
55
            $id = $manager->add($schedule);
56
        } catch (Exception $e) {
57
            throw new RpcException($e->getMessage(), -32500);
58
        }
59
60
        $refresh = Refresh::execute($params, $daemon);
0 ignored issues
show
Unused Code introduced by
The assignment to $refresh is dead and can be removed.
Loading history...
61
62
        // should method ignore invalid refresh message here?
63
64
        return $id;
65
66
    }
67
68
}
69