Coupon   A
last analyzed

Complexity

Total Complexity 22

Size/Duplication

Total Lines 136
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Importance

Changes 0
Metric Value
wmc 22
lcom 0
cbo 4
dl 0
loc 136
rs 10
c 0
b 0
f 0

22 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getCode() 0 4 1
A setCode() 0 4 1
A getCurrency() 0 4 1
A setCurrency() 0 4 1
A getModifierType() 0 4 1
A setModifierType() 0 4 1
A getModifierValue() 0 4 1
A setModifierValue() 0 4 1
A getValidFrom() 0 4 1
A setValidFrom() 0 4 1
A getValidTo() 0 4 1
A setValidTo() 0 4 1
A getClientUsageLimit() 0 4 1
A setClientUsageLimit() 0 4 1
A getGlobalUsageLimit() 0 4 1
A setGlobalUsageLimit() 0 4 1
A getMinimumOrderValue() 0 4 1
A setMinimumOrderValue() 0 4 1
A isExcludePromotions() 0 4 1
A setExcludePromotions() 0 4 1
A translate() 0 4 1
1
<?php
2
/*
3
 * WellCommerce Open-Source E-Commerce Platform
4
 *
5
 * This file is part of the WellCommerce package.
6
 *
7
 * (c) Adam Piotrowski <[email protected]>
8
 *
9
 * For the full copyright and license information,
10
 * please view the LICENSE file that was distributed with this source code.
11
 */
12
13
namespace WellCommerce\Bundle\CouponBundle\Entity;
14
15
use Knp\DoctrineBehaviors\Model\Blameable\Blameable;
16
use Knp\DoctrineBehaviors\Model\Timestampable\Timestampable;
17
use Knp\DoctrineBehaviors\Model\Translatable\Translatable;
18
use WellCommerce\Bundle\CoreBundle\Doctrine\Behaviours\Identifiable;
19
use WellCommerce\Bundle\CoreBundle\Entity\EntityInterface;
20
21
/**
22
 * Class Coupon
23
 *
24
 * @author  Adam Piotrowski <[email protected]>
25
 */
26
class Coupon implements EntityInterface
27
{
28
    use Identifiable;
29
    use Translatable;
30
    use Timestampable;
31
    use Blameable;
32
    
33
    protected $code              = '';
34
    protected $currency          = '';
35
    protected $modifierType      = '%';
36
    protected $modifierValue     = 0.00;
37
    protected $clientUsageLimit  = 1;
38
    protected $globalUsageLimit  = 1;
39
    protected $minimumOrderValue = 1;
40
    protected $excludePromotions = true;
41
    
42
    /**
43
     * @var \DateTime|null
44
     */
45
    protected $validFrom;
46
    
47
    /**
48
     * @var \DateTime|null
49
     */
50
    protected $validTo;
51
    
52
    public function __construct()
53
    {
54
        $this->code = strtoupper(uniqid());
55
    }
56
    
57
    public function getCode(): string
58
    {
59
        return $this->code;
60
    }
61
    
62
    public function setCode(string $code)
63
    {
64
        $this->code = $code;
65
    }
66
    
67
    public function getCurrency(): string
68
    {
69
        return $this->currency;
70
    }
71
    
72
    public function setCurrency(string $currency)
73
    {
74
        $this->currency = $currency;
75
    }
76
    
77
    public function getModifierType(): string
78
    {
79
        return $this->modifierType;
80
    }
81
    
82
    public function setModifierType(string $modifierType)
83
    {
84
        $this->modifierType = $modifierType;
85
    }
86
    
87
    public function getModifierValue(): float
88
    {
89
        return $this->modifierValue;
90
    }
91
    
92
    public function setModifierValue(float $modifierValue)
93
    {
94
        $this->modifierValue = $modifierValue;
95
    }
96
    
97
    public function getValidFrom()
98
    {
99
        return $this->validFrom;
100
    }
101
    
102
    public function setValidFrom(\DateTime $validFrom = null)
103
    {
104
        $this->validFrom = $validFrom;
105
    }
106
    
107
    public function getValidTo()
108
    {
109
        return $this->validTo;
110
    }
111
    
112
    public function setValidTo(\DateTime $validTo = null)
113
    {
114
        $this->validTo = $validTo;
115
    }
116
    
117
    public function getClientUsageLimit(): int
118
    {
119
        return $this->clientUsageLimit;
120
    }
121
    
122
    public function setClientUsageLimit(int $clientUsageLimit)
123
    {
124
        $this->clientUsageLimit = $clientUsageLimit;
125
    }
126
    
127
    public function getGlobalUsageLimit(): int
128
    {
129
        return $this->globalUsageLimit;
130
    }
131
    
132
    public function setGlobalUsageLimit(int $globalUsageLimit)
133
    {
134
        $this->globalUsageLimit = $globalUsageLimit;
135
    }
136
    
137
    public function getMinimumOrderValue(): float
138
    {
139
        return $this->minimumOrderValue;
140
    }
141
    
142
    public function setMinimumOrderValue(float $minimumOrderValue)
143
    {
144
        $this->minimumOrderValue = $minimumOrderValue;
0 ignored issues
show
Documentation Bug introduced by
The property $minimumOrderValue was declared of type integer, but $minimumOrderValue is of type double. Maybe add a type cast?

This check looks for assignments to scalar types that may be of the wrong type.

To ensure the code behaves as expected, it may be a good idea to add an explicit type cast.

$answer = 42;

$correct = false;

$correct = (bool) $answer;
Loading history...
145
    }
146
    
147
    public function isExcludePromotions(): bool
148
    {
149
        return $this->excludePromotions;
150
    }
151
    
152
    public function setExcludePromotions(bool $excludePromotions)
153
    {
154
        $this->excludePromotions = $excludePromotions;
155
    }
156
    
157
    public function translate($locale = null, $fallbackToDefault = true): CouponTranslation
158
    {
159
        return $this->doTranslate($locale, $fallbackToDefault);
160
    }
161
}
162