Fixed   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Test Coverage

Coverage 35.7%

Importance

Changes 0
Metric Value
dl 0
loc 41
rs 10
c 0
b 0
f 0
ccs 5
cts 14
cp 0.357
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A getDiscount() 0 3 1
A apply() 0 3 1
A fromArray() 0 11 2
1
<?php
2
3
namespace ConferenceTools\Tickets\Domain\ValueObject\DiscountType;
4
5
use ConferenceTools\Tickets\Domain\Service\Configuration;
6
use ConferenceTools\Tickets\Domain\ValueObject\Basket;
7
use ConferenceTools\Tickets\Domain\ValueObject\Money;
8
use ConferenceTools\Tickets\Domain\ValueObject\Price;
9
use JMS\Serializer\Annotation as Jms;
10
11
class Fixed implements DiscountTypeInterface
12
{
13
    /**
14
     * @JMS\Type("Price")
15
     * @var Price
16
     */
17
    private $discount;
18
19
    /**
20
     * Percentage constructor.
21
     * @param $discount
22
     */
23 2
    public function __construct(Price $discount)
24
    {
25 2
        $this->discount = $discount;
26 2
    }
27
28 2
    public function apply(Basket $to): Price
29
    {
30 2
        return $this->discount;
31
    }
32
33
    /**
34
     * @return Price
35
     */
36
    public function getDiscount(): Price
37
    {
38
        return $this->discount;
39
    }
40
41
    public static function fromArray(array $data, Configuration $configuration): DiscountTypeInterface
42
    {
43
        if (isset($data['net'])) {
44
            $amount = new Money($data['net'], $configuration->getCurrency());
45
            $discount = Price::fromNetCost($amount, $configuration->getTaxRate());
46
        } else {
47
            $amount = new Money($data['gross'], $configuration->getCurrency());
48
            $discount = Price::fromGrossCost($amount, $configuration->getTaxRate());
49
        }
50
51
        return new static($discount);
52
    }
53
}
54