Completed
Push — master ( 5d2be1...68f0c9 )
by Dominik
01:57
created

RelatedModelManipulationStack::addToRemoveModels()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Chubbyphp\Model;
6
7
final class RelatedModelManipulationStack
8
{
9
    /**
10
     * @var ModelInterface[]|array
11
     */
12
    private $toPersistModels = [];
13
14
    /**
15
     * @var ModelInterface[]|array
16
     */
17
    private $toRemoveModels = [];
18
19
    /**
20
     * @param ModelInterface[]|array $models
21
     * @return RelatedModelManipulationStack
22
     */
23
    public function addToPersistModels(array $models): RelatedModelManipulationStack
24
    {
25
        foreach ($models as $model) {
26
            $this->addToPersistModel($model);
27
        }
28
29
        return $this;
30
    }
31
32
    /**
33
     * @param ModelInterface $model
34
     * @return RelatedModelManipulationStack
35
     */
36
    public function addToPersistModel(ModelInterface $model): RelatedModelManipulationStack
37
    {
38
        $this->toPersistModels[$model->getId()] = $model;
39
40
        return $this;
41
    }
42
43
    /**
44
     * @param ModelInterface[]|array $models
45
     * @return RelatedModelManipulationStack
46
     */
47
    public function addToRemoveModels(array $models): RelatedModelManipulationStack
48
    {
49
        foreach ($models as $model) {
50
            $this->addToRemoveModel($model);
51
        }
52
53
        return $this;
54
    }
55
56
    /**
57
     * @param ModelInterface $model
58
     * @return RelatedModelManipulationStack
59
     */
60
    public function addToRemoveModel(ModelInterface $model): RelatedModelManipulationStack
61
    {
62
        $this->toRemoveModels[$model->getId()] = $model;
63
64
        return $this;
65
    }
66
67
    /**
68
     * @return ModelInterface[]|array
69
     */
70
    public function getToPersistModels(): array
71
    {
72
        return $this->toPersistModels;
73
    }
74
75
    /**
76
     * @return ModelInterface[]|array
77
     */
78
    public function getToRemoveModels(): array
79
    {
80
        $toRemoveModels = $this->toRemoveModels;
81
        foreach ($toRemoveModels as $toRemoveModel) {
82
            if (isset($this->toPersistModels[$toRemoveModel->getId()])) {
83
                unset($toRemoveModels[$toRemoveModel->getId()]);
84
            }
85
        }
86
87
        return $toRemoveModels;
88
    }
89
}
90