Passed
Push — master ( 81601f...461a97 )
by SignpostMarv
12:06
created

OpeningHoursSpecification   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 119
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 50
dl 0
loc 119
ccs 38
cts 38
cp 1
rs 10
c 0
b 0
f 0
wmc 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A SetDayOfWeek() 0 7 1
A SetOpens() 0 7 1
A GetDayOfWeek() 0 12 1
A GetOpens() 0 12 1
A GetCloses() 0 12 1
A SetCloses() 0 7 1
1
<?php
2
/**
3
* @author SignpostMarv
4
*/
5
declare(strict_types=1);
6
7
namespace SignpostMarv\DaftObject\SchemaOrg\Intangible\StructuredValue;
8
9
use SignpostMarv\DaftObject\SchemaOrg\DaftObjectTraits;
10
use SignpostMarv\DaftObject\SchemaOrg\DataTypes;
11
use SignpostMarv\DaftObject\SchemaOrg\Intangible\Enumeration\DayOfWeek;
12
use SignpostMarv\DaftObject\SchemaOrg\Intangible\StructuredValue as Base;
13
use SignpostMarv\DaftObject\SchemaOrg\TypeUtilities;
14
15
/**
16
* @property array<int, DataTypes\Time> $closes
17
* @property array<int, DayOfWeek> $dayOfWeek
18
* @property array<int, DataTypes\Time> $opens
19
* @property array<int, DataTypes\DateTime> $validFrom
20
* @property array<int, DataTypes\DateTime> $validThrough
21
*/
22
class OpeningHoursSpecification extends Base
23
{
24
    use DaftObjectTraits\HasValidFromThrough;
25
26
    const SCHEMA_ORG_TYPE = 'OpeningHoursSpecification';
27
28
    const PROPERTIES = [
29
        'closes',
30
        'dayOfWeek',
31
        'opens',
32
        'validFrom',
33
        'validThrough',
34
    ];
35
36
    const PROPERTIES_WITH_MULTI_TYPED_ARRAYS = [
37
        'closes' => [
38
            DataTypes\Time::class,
39
        ],
40
        'dayOfWeek' => [
41
            DayOfWeek::class,
42
        ],
43
        'opens' => [
44
            DataTypes\Time::class,
45
        ],
46
        'validFrom' => [
47
            DataTypes\DateTime::class,
48
        ],
49
        'validThrough' => [
50
            DataTypes\DateTime::class,
51
        ],
52
    ];
53
54
    /**
55
    * @return array<int, DataTypes\Time>
56
    */
57 19
    public function GetCloses() : array
58
    {
59
        /**
60
        * @var array<int, DataTypes\Time>
61
        */
62 19
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
63 19
            'closes',
64 19
            $this->RetrievePropertyValueFromData('closes'),
65 19
            static::class
66
        );
67
68 19
        return $out;
69
    }
70
71
    /**
72
    * @param array<int, DataTypes\Time> $value
73
    */
74 1
    public function SetCloses(array $value) : void
75
    {
76 1
        $this->NudgePropertyWithUniqueValuesOfThings(
77 1
            'closes',
78 1
            __METHOD__,
79 1
            $value,
80 1
            DataTypes\Time::class
81
        );
82 1
    }
83
84
    /**
85
    * @return array<int, DayOfWeek>
86
    */
87 19
    public function GetDayOfWeek() : array
88
    {
89
        /**
90
        * @var array<int, DayOfWeek>
91
        */
92 19
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
93 19
            'dayOfWeek',
94 19
            $this->RetrievePropertyValueFromData('dayOfWeek'),
95 19
            static::class
96
        );
97
98 19
        return $out;
99
    }
100
101
    /**
102
    * @param array<int, DayOfWeek> $value
103
    */
104 1
    public function SetDayOfWeek(array $value) : void
105
    {
106 1
        $this->NudgePropertyWithUniqueValuesOfThings(
107 1
            'dayOfWeek',
108 1
            __METHOD__,
109 1
            $value,
110 1
            DayOfWeek::class
111
        );
112 1
    }
113
114
    /**
115
    * @return array<int, DataTypes\Time>
116
    */
117 19
    public function GetOpens() : array
118
    {
119
        /**
120
        * @var array<int, DataTypes\Time>
121
        */
122 19
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
123 19
            'opens',
124 19
            $this->RetrievePropertyValueFromData('opens'),
125 19
            static::class
126
        );
127
128 19
        return $out;
129
    }
130
131
    /**
132
    * @param array<int, DataTypes\Time> $value
133
    */
134 1
    public function SetOpens(array $value) : void
135
    {
136 1
        $this->NudgePropertyWithUniqueValuesOfThings(
137 1
            'opens',
138 1
            __METHOD__,
139 1
            $value,
140 1
            DataTypes\Time::class
141
        );
142 1
    }
143
}
144