Completed
Pull Request — master (#28)
by Antonio Oertel
02:19
created

EmissionType   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 86
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 1

Test Coverage

Coverage 54.17%

Importance

Changes 0
Metric Value
wmc 11
lcom 2
cbo 1
dl 0
loc 86
ccs 13
cts 24
cp 0.5417
rs 10
c 0
b 0
f 0

10 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A validate() 0 6 2
A normal() 0 4 1
A contingencyDpec() 0 4 1
A contingencySVCRS() 0 4 1
A contingencySVCAN() 0 4 1
A contingencySCAN() 0 4 1
A contingencyOnSafetyForm() 0 4 1
A contingencyOnSafetyFormFSDA() 0 4 1
A __toString() 0 4 1
1
<?php
2
3
namespace Brazanation\Documents\Sped;
4
5
use Brazanation\Documents\Sped\Exception\InvalidEmissionType;
6
7
class EmissionType
8
{
9
    const NORMAL = 1;
10
11
    const CONTINGENCY_ON_SAFETY_FORM = 2;
12
13
    const CONTINGENCY_SCAN = 3;
14
15
    const CONTINGENCY_DPEC = 4;
16
17
    const CONTINGENCY_ON_SAFETY_FORM_FSDA = 5;
18
19
    const CONTINGENCY_SVCAN = 6;
20
21
    const CONTINGENCY_SVCRS = 7;
22
23
    private $type;
24
25
    private $allowed = [
26
        EmissionType::CONTINGENCY_DPEC,
27
        EmissionType::CONTINGENCY_ON_SAFETY_FORM,
28
        EmissionType::CONTINGENCY_ON_SAFETY_FORM_FSDA,
29
        EmissionType::CONTINGENCY_SCAN,
30
        EmissionType::CONTINGENCY_SVCAN,
31
        EmissionType::CONTINGENCY_SVCRS,
32
        EmissionType::NORMAL,
33
    ];
34
35
    /**
36
     * Model constructor.
37
     *
38
     * @param int $type
39
     */
40 17
    public function __construct($type)
41
    {
42 17
        $this->validate($type);
43 17
        $this->type = (int) $type;
44 17
    }
45
46 17
    private function validate($type)
47
    {
48 17
        if (!in_array($type, $this->allowed)) {
49
            throw InvalidEmissionType::notAllowed($type);
50
        }
51 17
    }
52
53 4
    public static function normal()
54
    {
55 4
        return new self(self::NORMAL);
56
    }
57
58
    public static function contingencyDpec()
59
    {
60
        return new self(self::CONTINGENCY_DPEC);
61
    }
62
63
    public static function contingencySVCRS()
64
    {
65
        return new self(self::CONTINGENCY_SVCRS);
66
    }
67
68
    public static function contingencySVCAN()
69
    {
70
        return new self(self::CONTINGENCY_SVCAN);
71
    }
72
73
    public static function contingencySCAN()
74
    {
75
        return new self(self::CONTINGENCY_SCAN);
76
    }
77
78 1
    public static function contingencyOnSafetyForm()
79
    {
80 1
        return new self(self::CONTINGENCY_ON_SAFETY_FORM);
81
    }
82
83
    public static function contingencyOnSafetyFormFSDA()
84
    {
85
        return new self(self::CONTINGENCY_ON_SAFETY_FORM_FSDA);
86
    }
87
88 5
    public function __toString()
89
    {
90 5
        return "{$this->type}";
91
    }
92
}
93