Order::decrement()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 12
Code Lines 6

Duplication

Lines 12
Ratio 100 %

Importance

Changes 0
Metric Value
dl 12
loc 12
rs 9.2
c 0
b 0
f 0
cc 4
eloc 6
nc 4
nop 1
1
<?php
2
3
namespace LarsJanssen\IncrementDecrement;
4
5
use Illuminate\Database\Eloquent\Model;
6
use LarsJanssen\IncrementDecrement\Repository\OrderRepositoryInterface;
7
8
class Order
9
{
10
    use HelperTrait;
11
12
    /**
13
     * @var OrderRepositoryInterface
14
     */
15
    protected $orderInfo;
16
    /**
17
     * @var mixed
18
     */
19
    public $column;
20
21
    /**
22
     * Order constructor.
23
     *
24
     * @param OrderRepositoryInterface $orderInfo
25
     */
26
    public function __construct(OrderRepositoryInterface $orderInfo)
27
    {
28
        $this->orderInfo = $orderInfo;
29
        $this->column = config('increment-decrement.order_column_name');
30
    }
31
32
    /**
33
     * @param Model $model
34
     *
35
     * @return mixed
36
     */
37 View Code Duplication
    public function increment(Model $model)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
38
    {
39
        if ($this->isValidModel($model)) {
40
            if (!(bool) config('increment-decrement.first_row_can_increment')) {
41
                if ($model->{$this->column} <= 1) {
42
                    return false;
43
                }
44
            }
45
46
            return $this->orderInfo->increment($model);
47
        }
48
    }
49
50
    /**
51
     * @param Model $model
52
     *
53
     * @return mixed
54
     */
55 View Code Duplication
    public function decrement(Model $model)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
56
    {
57
        if ($this->isValidModel($model)) {
58
            if (!(bool) config('increment-decrement.last_row_can_decrement')) {
59
                if ($model->{$this->column} >= 1) {
60
                    return false;
61
                }
62
            }
63
64
            return $this->orderInfo->decrement($model);
65
        }
66
    }
67
68
    /**
69
     * @param Model $model
70
     *
71
     * @return mixed
72
     */
73
    public function delete(Model $model)
74
    {
75
        if ($this->isValidModel($model)) {
76
            return $this->orderInfo->delete($model);
77
        }
78
    }
79
80
    /**
81
     * @param Model $model
82
     *
83
     * @return mixed
84
     */
85
    public function toFirst(Model $model)
86
    {
87
        if ($this->isValidModel($model)) {
88
            return $this->orderInfo->toFirst($model);
89
        }
90
    }
91
92
    /**
93
     * @param Model $model
94
     *
95
     * @return mixed
96
     */
97
    public function toLast(Model $model)
98
    {
99
        if ($this->isValidModel($model)) {
100
            return $this->orderInfo->toLast($model);
101
        }
102
    }
103
104
    /**
105
     * @param Model $model
106
     *
107
     * @return mixed
108
     */
109
    public function toMiddle(Model $model)
110
    {
111
        if ($this->isValidModel($model)) {
112
            return $this->orderInfo->toMiddle($model);
113
        }
114
    }
115
116
    /**
117
     * @param Model $model1
118
     * @param Model $model2
119
     *
120
     * @return mixed
121
     */
122
    public function switchModels(Model $model1, Model $model2)
123
    {
124
        if ($this->isValidModel($model1) && $this->isValidModel($model2)) {
125
            return $this->orderInfo->switchModels($model1, $model2);
126
        }
127
    }
128
129
    /**
130
     * @param Model $model
131
     * @param Model $index1
132
     * @param Model $index2
133
     *
134
     * @return mixed
135
     */
136
    public function switchIndexes(Model $model, $index1, $index2)
137
    {
138
        if ($this->isValidIndex($index1) && $this->isValidIndex($index2)) {
139
            return $this->orderInfo->switchIndexes($model, $index1, $index2);
140
        }
141
    }
142
}
143