ProctRecordAction::errorException()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace roaresearch\yii2\roa\actions;
4
5
use roaresearch\yii2\roa\hal\ARContract;
6
use Yii;
7
use yii\web\{HttpException, ServerErrorHttpException};
8
9
/**
10
 * Proct a record. Returns the record on success, throws exception on error.
11
 *
12
 * @author Angel (Faryshta) Guevara <[email protected]>
13
 */
14
abstract class ProctRecordAction extends Action
15
{
16
    /**
17
     * @var string error message thrown when proct fails.
18
     */
19
    protected string $errorMessage = 'Process failed for unknown reasons.';
20
21
    /**
22
     * Procts a record.
23
     *
24
     * @param mixed $id the identifier value.
25
     * @return ARContract the record after successful proct
26
     */
27 8
    public function run($id): ?ARContract
28
    {
29 8
        $this->checkAccess(
30 8
            ($model = $this->findModel($id)),
31 8
            ($params = Yii::$app->request->getQueryParams())
32
        );
33 8
        $this->proct($model, $params) ?: throw $this->errorException();
34
35 8
        return $this->successResponse($model);
36
    }
37
38
    /**
39
     * @param ARContract $model
40
     * @param array $params the request params
41
     * @return bool whether the proct was successful
42
     */
43
    abstract protected function proct(ARContract $model, array $params): bool;
44
45
    /**
46
     * @return HttpException
47
     */
48
    protected function errorException(): HttpException
49
    {
50
        return new ServerErrorHttpException($this->errorMessage);
51
    }
52
53
    /**
54
     * @param ARContract $model
55
     */
56 3
    protected function successResponse(ARContract $model)
57
    {
58 3
        return $model;
59
    }
60
}
61