Update::run()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 22
c 0
b 0
f 0
rs 9.2
nc 1
cc 1
eloc 12
nop 3
1
<?php
2
3
4
namespace Machdas\Action\Task;
5
6
use Illuminate\Database\Eloquent\ModelNotFoundException;
7
use Machdas\Action;
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 Update extends Action\AbstractImpl
15
{
16
17
    /**
18
     * @param Request $request
19
     * @param Response $response
20
     * @param array $args
21
     * @return Response
22
     * @throws ModelNotFoundException
23
     * @throws NestedValidationException
24
     */
25
    public function run(Request $request, Response $response, array $args) : Response
26
    {
27
        // load and fill model
28
        /* @var Task $model */
29
        $model           = Task::query()->findOrFail($args['id']);
30
        $model->name     = $request->getParsedBodyParam('name');
31
        $model->isDone   = (bool) $request->getParsedBodyParam('isDone');
32
        $model->priority = DatabaseUtils::parseTaskPriority($request->getParsedBodyParam('priority', 500));
33
        $model->cardId   = (int) $request->getParsedBodyParam('cardId');
34
35
        // validation
36
        Task::validators()['name']->assert($model->name);
37
        Task::validators()['isDone']->assert($model->isDone);
38
        Task::validators()['priority']->assert($model->priority);
39
        Task::validators()['cardId']->assert($model->cardId);
40
41
        // save
42
        $model->saveOrFail();
43
44
        // response
45
        return $response->withStatus(204);
46
    }
47
}
48