Passed
Push — master ( 205e6e...6d0f47 )
by SignpostMarv
11:40
created

Event::SetWorkPerformed()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 1
dl 0
loc 7
ccs 6
cts 6
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
* @author SignpostMarv
4
*/
5
declare(strict_types=1);
6
7
namespace SignpostMarv\DaftObject\SchemaOrg;
8
9
use SignpostMarv\DaftObject\SchemaOrg\CreativeWork\Review;
10
use SignpostMarv\DaftObject\SchemaOrg\DataTypes\Date;
11
use SignpostMarv\DaftObject\SchemaOrg\DataTypes\DateTime;
12
use SignpostMarv\DaftObject\SchemaOrg\Intangible\Enumeration\EventStatusType;
13
use SignpostMarv\DaftObject\SchemaOrg\Intangible\Language;
14
use SignpostMarv\DaftObject\SchemaOrg\Intangible\Quantity\Duration;
15
use SignpostMarv\DaftObject\SchemaOrg\Intangible\Rating\AggregateRating;
16
use SignpostMarv\DaftObject\SchemaOrg\Intangible\StructuredValue\ContactPoint\PostalAddress;
17
18
/**
19
* @property array<int, Thing> $about
20
* @property array<int, Person> $actor
21
* @property array<int, AggregateRating> $aggregateRating
22
* @property array<int, Organization|Person> $attendee
23
* @property array<int, Audience> $audience
24
* @property array<int, Organization|Person> $composer
25
* @property array<int, Organization|Person> $contributor
26
* @property array<int, Person> $director
27
* @property array<int, DateTime> $doorTime
28
* @property array<int, Duration> $duration
29
* @property array<int, Date|DateTime> $endDate
30
* @property array<int, EventStatusType> $eventStatus
31
* @property array<int, Organization|Person> $funder
32
* @property array<int, string|Language> $inLanguage
33
* @property array<int, bool> $isAccessibleForFree
34
* @property array<int, string|Place|PostalAddress> $location
35
* @property array<int, Organization|Person> $maximumAttendeeCapacity
36
* @property array<int, Offer> $offers
37
* @property array<int, Organization|Person> $organizer
38
* @property array<int, Organization|Person> $performer
39
* @property array<int, Date> $previousStartDate
40
* @property array<int, CreativeWork> $recordedIn
41
* @property array<int, int> $remainingAttendeeCapacity
42
* @property array<int, Review> $review
43
* @property array<int, Organization|Person> $sponsor
44
* @property array<int, Date> $startDate
45
* @property array<int, Event> $subEvent
46
* @property array<int, Event> $superEvent
47
* @property array<int, Organization|Person> $translator
48
* @property array<int, string> $typicalAgeRange
49
* @property array<int, CreativeWork> $workFeatured
50
* @property array<int, CreativeWork> $workPerformed
51
*/
52
class Event extends Thing
53
{
54
    use DaftObjectTraits\HasAboutThing;
55
    use DaftObjectTraits\HasActor;
56
    use DaftObjectTraits\HasAggregateRating;
57
    use DaftObjectTraits\HasAudience;
58
    use DaftObjectTraits\Composer;
59
    use DaftObjectTraits\HasDirector;
60
    use DaftObjectTraits\Duration;
61
    use DaftObjectTraits\HasFunder;
62
    use DaftObjectTraits\HasInLanguage;
63
    use DaftObjectTraits\HasIsAccessibleForFree;
64
    use DaftObjectTraits\HasLocation;
65
    use DaftObjectTraits\HasOffers;
66
    use DaftObjectTraits\HasReview;
67
    use DaftObjectTraits\HasSponsors;
68
    use DaftObjectTraits\HasTranslators;
69
    use DaftObjectTraits\HasTypicalAgeRanges;
70
71
    const SCHEMA_ORG_TYPE = 'Event';
72
73
    const PROPERTIES = [
74
        'about',
75
        'actor',
76
        'aggregateRating',
77
        'attendee',
78
        'audience',
79
        'composer',
80
        'contributor',
81
        'director',
82
        'doorTime',
83
        'duration',
84
        'endDate',
85
        'eventStatus',
86
        'funder',
87
        'inLanguage',
88
        'isAccessibleForFree',
89
        'location',
90
        'maximumAttendeeCapacity',
91
        'offers',
92
        'organizer',
93
        'performer',
94
        'previousStartDate',
95
        'recordedIn',
96
        'remainingAttendeeCapacity',
97
        'review',
98
        'sponsor',
99
        'startDate',
100
        'subEvent',
101
        'superEvent',
102
        'translator',
103
        'typicalAgeRange',
104
        'workFeatured',
105
        'workPerformed',
106
    ];
107
108
    const PROPERTIES_WITH_MULTI_TYPED_ARRAYS = [
109
        'about' => [
110
            Thing::class,
111
        ],
112
        'actor' => [
113
            Person::class,
114
        ],
115
        'aggregateRating' => [
116
            AggregateRating::class,
117
        ],
118
        'attendee' => [
119
            Organization::class,
120
            Person::class,
121
        ],
122
        'audience' => [
123
            Audience::class,
124
        ],
125
        'composer' => [
126
            Organization::class,
127
            Person::class,
128
        ],
129
        'contributor' => [
130
            Organization::class,
131
            Person::class,
132
        ],
133
        'director' => [
134
            Person::class,
135
        ],
136
        'doorTime' => [
137
            DateTime::class,
138
        ],
139
        'duration' => [
140
            Duration::class,
141
        ],
142
        'endDate' => [
143
            Date::class,
144
            DateTime::class,
145
        ],
146
        'eventStatus' => [
147
            EventStatusType::class,
148
        ],
149
        'funder' => [
150
            Organization::class,
151
            Person::class,
152
        ],
153
        'inLanguage' => [
154
            'string',
155
            Language::class,
156
        ],
157
        'isAccessibleForFree' => [
158
            'boolean',
159
        ],
160
        'location' => [
161
            'string',
162
            Place::class,
163
            PostalAddress::class,
164
        ],
165
        'maximumAttendeeCapacity' => [
166
            Organization::class,
167
            Person::class,
168
        ],
169
        'offers' => [
170
            Offer::class,
171
        ],
172
        'organizer' => [
173
            Organization::class,
174
            Person::class,
175
        ],
176
        'performer' => [
177
            Organization::class,
178
            Person::class,
179
        ],
180
        'previousStartDate' => [
181
            Date::class,
182
        ],
183
        'recordedIn' => [
184
            CreativeWork::class,
185
        ],
186
        'remainingAttendeeCapacity' => [
187
            'integer',
188
        ],
189
        'review' => [
190
            Review::class,
191
        ],
192
        'sponsor' => [
193
            Organization::class,
194
            Person::class,
195
        ],
196
        'startDate' => [
197
            Date::class,
198
        ],
199
        'subEvent' => [
200
            Event::class,
201
        ],
202
        'superEvent' => [
203
            Event::class,
204
        ],
205
        'translator' => [
206
            Organization::class,
207
            Person::class,
208
        ],
209
        'typicalAgeRange' => [
210
            'string',
211
        ],
212
        'workFeatured' => [
213
            CreativeWork::class,
214
        ],
215
        'workPerformed' => [
216
            CreativeWork::class,
217
        ],
218
    ];
219
220
    /**
221
    * @return array<int, Organization|Person>
222
    */
223 203
    public function GetAttendee() : array
224
    {
225
        /**
226
        * @var array<int, Organization|Person>
227
        */
228 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
229 203
            'attendee',
230 203
            $this->RetrievePropertyValueFromData('attendee'),
231 203
            static::class
232
        );
233
234 203
        return $out;
235
    }
236
237
    /**
238
    * @param array<int, Organization|Person> $value
239
    */
240 3
    public function SetAttendee(array $value) : void
241
    {
242 3
        $this->NudgePropertyWithUniqueOrganizationsOrPersons('attendee', __METHOD__, $value);
243 3
    }
244
245
    /**
246
    * @return array<int, Organization|Person>
247
    */
248 203
    public function GetContributor() : array
249
    {
250
        /**
251
        * @var array<int, Organization|Person>
252
        */
253 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
254 203
            'contributor',
255 203
            $this->RetrievePropertyValueFromData('contributor'),
256 203
            static::class
257
        );
258
259 203
        return $out;
260
    }
261
262
    /**
263
    * @param array<int, Organization|Person> $value
264
    */
265 3
    public function SetContributor(array $value) : void
266
    {
267 3
        $this->NudgePropertyWithUniqueOrganizationsOrPersons('contributor', __METHOD__, $value);
268 3
    }
269
270
    /**
271
    * @return array<int, DateTime>
272
    */
273 203
    public function GetDoorTime() : array
274
    {
275
        /**
276
        * @var array<int, DateTime>
277
        */
278 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
279 203
            'doorTime',
280 203
            $this->RetrievePropertyValueFromData('doorTime'),
281 203
            static::class
282
        );
283
284 203
        return $out;
285
    }
286
287
    /**
288
    * @param array<int, DateTime> $value
289
    */
290 3
    public function SetDoorTime(array $value) : void
291
    {
292 3
        $this->NudgePropertyWithUniqueValuesOfThings(
293 3
            'doorTime',
294 3
            __METHOD__,
295 3
            $value,
296 3
            DateTime::class
297
        );
298 3
    }
299
300
    /**
301
    * @return array<int, Date|DateTime>
302
    */
303 203
    public function GetEndDate() : array
304
    {
305
        /**
306
        * @var array<int, Date|DateTime>
307
        */
308 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
309 203
            'endDate',
310 203
            $this->RetrievePropertyValueFromData('endDate'),
311 203
            static::class
312
        );
313
314 203
        return $out;
315
    }
316
317
    /**
318
    * @param array<int, Date|DateTime> $value
319
    */
320 3
    public function SetEndDate(array $value) : void
321
    {
322 3
        $this->NudgePropertyWithUniqueDatesOrDateTimes('endDate', __METHOD__, $value);
323 3
    }
324
325
    /**
326
    * @return array<int, EventStatusType>
327
    */
328 203
    public function GetEventStatus() : array
329
    {
330
        /**
331
        * @var array<int, EventStatusType>
332
        */
333 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
334 203
            'eventStatus',
335 203
            $this->RetrievePropertyValueFromData('eventStatus'),
336 203
            static::class
337
        );
338
339 203
        return $out;
340
    }
341
342
    /**
343
    * @param array<int, EventStatusType> $value
344
    */
345 3
    public function SetEventStatus(array $value) : void
346
    {
347 3
        $this->NudgePropertyWithUniqueValuesOfThings(
348 3
            'eventStatus',
349 3
            __METHOD__,
350 3
            $value,
351 3
            EventStatusType::class
352
        );
353 3
    }
354
355
    /**
356
    * @return array<int, Organization|Person>
357
    */
358 203
    public function GetMaximumAttendeeCapacity() : array
359
    {
360
        /**
361
        * @var array<int, Organization|Person>
362
        */
363 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
364 203
            'maximumAttendeeCapacity',
365 203
            $this->RetrievePropertyValueFromData('maximumAttendeeCapacity'),
366 203
            static::class
367
        );
368
369 203
        return $out;
370
    }
371
372
    /**
373
    * @param array<int, Organization|Person> $value
374
    */
375 3
    public function SetMaximumAttendeeCapacity(array $value) : void
376
    {
377 3
        $this->NudgePropertyWithUniqueValues('maximumAttendeeCapacity', __METHOD__, $value);
378 3
    }
379
380
    /**
381
    * @return array<int, Organization|Person>
382
    */
383 203
    public function GetOrganizer() : array
384
    {
385
        /**
386
        * @var array<int, Organization|Person>
387
        */
388 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
389 203
            'organizer',
390 203
            $this->RetrievePropertyValueFromData('organizer'),
391 203
            static::class
392
        );
393
394 203
        return $out;
395
    }
396
397
    /**
398
    * @param array<int, Organization|Person> $value
399
    */
400 3
    public function SetOrganizer(array $value) : void
401
    {
402 3
        $this->NudgePropertyWithUniqueOrganizationsOrPersons('organizer', __METHOD__, $value);
403 3
    }
404
405
    /**
406
    * @return array<int, Organization|Person>
407
    */
408 203
    public function GetPerformer() : array
409
    {
410
        /**
411
        * @var array<int, Organization|Person>
412
        */
413 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
414 203
            'performer',
415 203
            $this->RetrievePropertyValueFromData('performer'),
416 203
            static::class
417
        );
418
419 203
        return $out;
420
    }
421
422
    /**
423
    * @param array<int, Organization|Person> $value
424
    */
425 3
    public function SetPerformer(array $value) : void
426
    {
427 3
        $this->NudgePropertyWithUniqueOrganizationsOrPersons('performer', __METHOD__, $value);
428 3
    }
429
430
    /**
431
    * @return array<int, Date>
432
    */
433 203
    public function GetPreviousStartDate() : array
434
    {
435
        /**
436
        * @var array<int, Date>
437
        */
438 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
439 203
            'previousStartDate',
440 203
            $this->RetrievePropertyValueFromData('previousStartDate'),
441 203
            static::class
442
        );
443
444 203
        return $out;
445
    }
446
447
    /**
448
    * @param array<int, Date> $value
449
    */
450 3
    public function SetPreviousStartDate(array $value) : void
451
    {
452 3
        $this->NudgePropertyWithUniqueDates('previousStartDate', __METHOD__, $value);
453 3
    }
454
455
    /**
456
    * @return array<int, CreativeWork>
457
    */
458 203
    public function GetRecordedIn() : array
459
    {
460
        /**
461
        * @var array<int, CreativeWork>
462
        */
463 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
464 203
            'recordedIn',
465 203
            $this->RetrievePropertyValueFromData('recordedIn'),
466 203
            static::class
467
        );
468
469 203
        return $out;
470
    }
471
472
    /**
473
    * @param array<int, CreativeWork> $value
474
    */
475 3
    public function SetRecordedIn(array $value) : void
476
    {
477 3
        $this->NudgePropertyWithUniqueValuesOfThings(
478 3
            'recordedIn',
479 3
            __METHOD__,
480 3
            $value,
481 3
            CreativeWork::class
482
        );
483 3
    }
484
485
    /**
486
    * @return array<int, int>
487
    */
488 203
    public function GetRemainingAttendeeCapacity() : array
489
    {
490
        /**
491
        * @var array<int, int>
492
        */
493 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
494 203
            'remainingAttendeeCapacity',
495 203
            $this->RetrievePropertyValueFromData('remainingAttendeeCapacity'),
496 203
            static::class
497
        );
498
499 203
        return $out;
500
    }
501
502
    /**
503
    * @param array<int, int> $value
504
    */
505 3
    public function SetRemainingAttendeeCapacity(array $value) : void
506
    {
507 3
        $this->NudgePropertyWithUniqueIntegers('remainingAttendeeCapacity', __METHOD__, $value);
508 3
    }
509
510
    /**
511
    * @return array<int, Date>
512
    */
513 203
    public function GetStartDate() : array
514
    {
515
        /**
516
        * @var array<int, Date>
517
        */
518 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
519 203
            'startDate',
520 203
            $this->RetrievePropertyValueFromData('startDate'),
521 203
            static::class
522
        );
523
524 203
        return $out;
525
    }
526
527
    /**
528
    * @param array<int, Date> $value
529
    */
530 3
    public function SetStartDate(array $value) : void
531
    {
532 3
        $this->NudgePropertyWithUniqueDatesOrDateTimes('startDate', __METHOD__, $value);
533 3
    }
534
535
    /**
536
    * @return array<int, Event>
537
    */
538 203
    public function GetSubEvent() : array
539
    {
540
        /**
541
        * @var array<int, Event>
542
        */
543 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
544 203
            'subEvent',
545 203
            $this->RetrievePropertyValueFromData('subEvent'),
546 203
            static::class
547
        );
548
549 203
        return $out;
550
    }
551
552
    /**
553
    * @param array<int, Event> $value
554
    */
555 3
    public function SetSubEvent(array $value) : void
556
    {
557 3
        $this->NudgePropertyWithUniqueEvents('subEvent', __METHOD__, $value);
558 3
    }
559
560
    /**
561
    * @return array<int, Event>
562
    */
563 203
    public function GetSuperEvent() : array
564
    {
565
        /**
566
        * @var array<int, Event>
567
        */
568 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
569 203
            'superEvent',
570 203
            $this->RetrievePropertyValueFromData('superEvent'),
571 203
            static::class
572
        );
573
574 203
        return $out;
575
    }
576
577
    /**
578
    * @param array<int, Event> $value
579
    */
580 3
    public function SetSuperEvent(array $value) : void
581
    {
582 3
        $this->NudgePropertyWithUniqueEvents('superEvent', __METHOD__, $value);
583 3
    }
584
585
    /**
586
    * @return array<int, CreativeWork>
587
    */
588 203
    public function GetWorkFeatured() : array
589
    {
590
        /**
591
        * @var array<int, CreativeWork>
592
        */
593 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
594 203
            'workFeatured',
595 203
            $this->RetrievePropertyValueFromData('workFeatured'),
596 203
            static::class
597
        );
598
599 203
        return $out;
600
    }
601
602
    /**
603
    * @param array<int, CreativeWork> $value
604
    */
605 3
    public function SetWorkFeatured(array $value) : void
606
    {
607 3
        $this->NudgePropertyWithUniqueValuesOfThings(
608 3
            'workFeatured',
609 3
            __METHOD__,
610 3
            $value,
611 3
            CreativeWork::class
612
        );
613 3
    }
614
615
    /**
616
    * @return array<int, CreativeWork>
617
    */
618 203
    public function GetWorkPerformed() : array
619
    {
620
        /**
621
        * @var array<int, CreativeWork>
622
        */
623 203
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
624 203
            'workPerformed',
625 203
            $this->RetrievePropertyValueFromData('workPerformed'),
626 203
            static::class
627
        );
628
629 203
        return $out;
630
    }
631
632
    /**
633
    * @param array<int, CreativeWork> $value
634
    */
635 3
    public function SetWorkPerformed(array $value) : void
636
    {
637 3
        $this->NudgePropertyWithUniqueValuesOfThings(
638 3
            'workPerformed',
639 3
            __METHOD__,
640 3
            $value,
641 3
            CreativeWork::class
642
        );
643 3
    }
644
}
645