CreateTask   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Importance

Changes 0
Metric Value
dl 0
loc 37
c 0
b 0
f 0
wmc 1
lcom 1
cbo 8
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B run() 0 26 1
1
<?php
2
3
4
namespace Machdas\Action\Card;
5
6
use Machdas\Action;
7
use Machdas\Model\Card;
8
use Machdas\Model\Task;
9
use Machdas\Utils\DatabaseUtils;
10
use Respect\Validation\Exceptions\NestedValidationException;
11
use Slim\Http\Request;
12
use Slim\Http\Response;
13
14
class CreateTask extends Action\AbstractImpl
15
{
16
17
    /**
18
     * @param Request $request
19
     * @param Response $response
20
     * @param array $args
21
     * @return Response
22
     * @throws NestedValidationException
23
     */
24
    public function run(Request $request, Response $response, array $args) : Response
25
    {
26
        /* @var Card $card */
27
        $card = Card::query()->findOrFail($args['id']);
28
29
        // create task
30
        $model           = new Task();
31
        $model->name     = $request->getParsedBodyParam('name');
32
        $model->isDone   = (bool) $request->getParsedBodyParam('isDone', false);
33
        $model->priority = DatabaseUtils::parseTaskPriority($request->getParsedBodyParam('priority', 500));
34
        $model->cardId   = $card->id;
35
36
        // validation
37
        Task::validators()['name']->assert($model->name);
38
        Task::validators()['isDone']->assert($model->isDone);
39
        Task::validators()['priority']->assert($model->priority);
40
41
        // save
42
        $model->saveOrFail();
43
44
        // response
45
        return $response
46
            ->withStatus(201)
47
            ->withHeader('Location', sprintf('/tasks/%d', $model->id))
48
            ->withJson($model);
49
    }
50
}
51