PlanPrice   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Importance

Changes 2
Bugs 2 Features 0
Metric Value
eloc 10
c 2
b 2
f 0
dl 0
loc 54
rs 10
wmc 10

10 Methods

Rating   Name   Duplication   Size   Complexity  
A getAsMoney() 0 3 1
A getAmount() 0 3 1
A setEntityId() 0 3 1
A getPriceId() 0 3 1
A getEntityId() 0 3 1
A hasPriceId() 0 3 1
A getCurrency() 0 3 1
A __construct() 0 7 1
A hasEntityId() 0 3 1
A getSchedule() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * Copyright (C) 2020-2025 Iain Cambridge
7
 *
8
 * This program is free software: you can redistribute it and/or modify
9
 * it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE as published by
10
 * the Free Software Foundation, either version 2.1 of the License, or
11
 * (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU Lesser General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License
19
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
20
 */
21
22
namespace Parthenon\Billing\Plan;
23
24
use Brick\Money\Currency;
25
use Brick\Money\Money;
26
27
class PlanPrice
28
{
29
    public function __construct(
30
        private string $schedule,
31
        private string|int|float $amount,
32
        private string $currency,
33
        private ?string $priceId = null,
34
        private $entityId = null,
35
    ) {
36
    }
37
38
    public function getSchedule(): string
39
    {
40
        return $this->schedule;
41
    }
42
43
    public function getAmount(): string
44
    {
45
        return $this->amount;
46
    }
47
48
    public function getCurrency(): string
49
    {
50
        return $this->currency;
51
    }
52
53
    public function getPriceId(): ?string
54
    {
55
        return $this->priceId;
56
    }
57
58
    public function hasPriceId(): bool
59
    {
60
        return isset($this->priceId);
61
    }
62
63
    public function getAsMoney(): Money
64
    {
65
        return Money::ofMinor($this->amount, Currency::of(strtoupper($this->currency)));
66
    }
67
68
    public function getEntityId(): mixed
69
    {
70
        return $this->entityId;
71
    }
72
73
    public function setEntityId(mixed $entityId): void
74
    {
75
        $this->entityId = $entityId;
76
    }
77
78
    public function hasEntityId(): bool
79
    {
80
        return isset($this->entityId);
81
    }
82
}
83