ModelUpdater::updateModel()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
ccs 0
cts 3
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace WebTheory\Saveyour\Processor;
4
5
use Psr\Http\Message\ServerRequestInterface;
6
use WebTheory\Saveyour\Abstracts\QueriesRepositoryTrait;
7
use WebTheory\Saveyour\Contracts\Processor\FormDataProcessorInterface;
8
use WebTheory\Saveyour\Contracts\Report\FormProcessReportInterface;
9
use WebTheory\Saveyour\Processor\Abstracts\AbstractFormDataProcessor;
10
11
class ModelUpdater extends AbstractFormDataProcessor implements FormDataProcessorInterface
12
{
13
    use QueriesRepositoryTrait;
14
15
    protected object $model;
16
17
    public function __construct(
18
        string $name,
19
        ?array $fields,
20
        object $model,
21
        object $repository,
22
        string $updateMethod,
23
        ?string $commitMethod = null
24
    ) {
25
        parent::__construct($name, $fields);
26
27
        $this->model = $model;
28
        $this->repository = $repository;
29
        $this->updateMethod = $updateMethod;
30
        $this->commitMethod = $commitMethod;
31
    }
32
33
    public function process(ServerRequestInterface $request, array $results): ?FormProcessReportInterface
34
    {
35
        if ($this->hasReasonToProcess($results)) {
36
            $this->updateModel();
37
        }
38
39
        return null;
40
    }
41
42
    protected function updateModel(): void
43
    {
44
        $this->updateRepository($this->model);
45
        $this->maybeCommitRepositoryChanges();
46
    }
47
}
48