Completed
Push — master ( 90e845...fe6a18 )
by Derek Stephen
01:16
created

Category::__construct()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2.032

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 4
cts 5
cp 0.8
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 1
crap 2.032
1
<?php
2
3
namespace Del\Expenses\Value;
4
5
use Del\Common\Value\ValueInterface;
6
use Del\Expenses\Entity\Income;
7
use InvalidArgumentException;
8
9
class Category implements ValueInterface
10
{
11
    const CATEGORY_UNDEFINED = 'undefined';
12
13
    const INCOME_CASH_JOB ='cash';
14
    const INCOME_INVOICE = 'invoice';
15
    const INCOME_LOAN_REPAYMENT = 'loanpayback';
16
    const INCOME_REBATE = 'rebate';
17
18
    const EXPENSE_ACCOMMODATION = 'accommodation';
19
    const EXPENSE_ACCOUNTANCY = 'accountancy';
20
    const EXPENSE_BILL = 'bill';
21
    const EXPENSE_EQUIPMENT = 'equipment';
22
    const EXPENSE_EQUPIMENT_HIRE = 'hire';
23
    const EXPENSE_FOOD = 'food';
24
    const EXPENSE_FUEL = 'fuel';
25
    const EXPENSE_GENERAL = 'general';
26
    const EXPENSE_INSURANCE = 'insurance';
27
    const EXPENSE_IT = 'it';
28
    const EXPENSE_LOAN = 'loan';
29
    const EXPENSE_MISC = 'misc';
30
    const EXPENSE_PERSONAL = 'personal';
31
    const EXPENSE_RENT = 'rent';
32
    const EXPENSE_REPAIRS = 'repairs';
33
    const EXPENSE_SERVICES = 'services';
34
    const EXPENSE_SUPPLIES = 'supplies';
35
    const EXPENSE_TAX = 'tax';
36
    const EXPENSE_TRAINING = 'training';
37
    const EXPENSE_TRANSPORT = 'transport';
38
    const EXPENSE_WAGES = 'wages';
39
40
    private $acceptableValues = [
41
        self::INCOME_CASH_JOB, self::INCOME_INVOICE, self::INCOME_LOAN_REPAYMENT, self::INCOME_REBATE,
42
        self::EXPENSE_ACCOMMODATION, self::EXPENSE_ACCOUNTANCY, self::EXPENSE_BILL, self::EXPENSE_EQUIPMENT,
43
        self::EXPENSE_EQUPIMENT_HIRE, self::EXPENSE_FOOD, self::EXPENSE_FUEL, self::EXPENSE_GENERAL, self::EXPENSE_IT,
44
        self::EXPENSE_INSURANCE, self::EXPENSE_LOAN, self::EXPENSE_MISC, self::EXPENSE_PERSONAL, self::EXPENSE_RENT,
45
        self::EXPENSE_REPAIRS, self::EXPENSE_SERVICES, self::EXPENSE_SUPPLIES, self::EXPENSE_TAX,
46
        self::EXPENSE_TRANSPORT, self::EXPENSE_TRAINING, self::EXPENSE_WAGES, self::CATEGORY_UNDEFINED
47
    ];
48
49
    /** @var string $value */
50
    private $value;
51
52
    /**
53
     * ValueInterface constructor.
54
     * @param string $value
55
     */
56 7
    public function __construct($value)
57
    {
58 7
        if (!in_array($value, $this->acceptableValues)) {
59
            throw new InvalidArgumentException('Not an acceptable value.');
60
        }
61 7
        $this->value = $value;
62 7
    }
63
64
    /**
65
     * @return string
66
     */
67 7
    public function getValue()
68
    {
69 7
        return $this->value;
70
    }
71
72
73
}