PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.20
Booking for Appointments and Events Calendar – Amelia v1.2.20
2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Domain / Factory / Booking / Event / EventPeriodFactory.php
ameliabooking / src / Domain / Factory / Booking / Event Last commit date
CustomerBookingEventPeriodFactory.php 7 years ago CustomerBookingEventTicketFactory.php 1 year ago EventFactory.php 1 year ago EventPeriodFactory.php 1 year ago EventTagFactory.php 7 years ago EventTicketFactory.php 1 year ago RecurringFactory.php 4 years ago
EventPeriodFactory.php
88 lines
1 <?php
2 /**
3 * @copyright © TMS-Plugins. All rights reserved.
4 * @licence See LICENCE.md for license details.
5 */
6
7 namespace AmeliaBooking\Domain\Factory\Booking\Event;
8
9 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
10 use AmeliaBooking\Domain\Entity\Booking\Event\EventPeriod;
11 use AmeliaBooking\Domain\Services\DateTime\DateTimeService;
12 use AmeliaBooking\Domain\ValueObjects\DateTime\DateTimeValue;
13 use AmeliaBooking\Domain\ValueObjects\Number\Integer\Id;
14 use AmeliaBooking\Domain\ValueObjects\String\Label;
15 use AmeliaBooking\Domain\ValueObjects\String\Url;
16 use AmeliaBooking\Domain\Factory\Zoom\ZoomFactory;
17 use AmeliaBooking\Domain\ValueObjects\String\Token;
18
19 /**
20 * Class EventPeriodFactory
21 *
22 * @package AmeliaBooking\Domain\Factory\Booking\Event
23 */
24 class EventPeriodFactory
25 {
26
27 /**
28 * @param $data
29 *
30 * @return EventPeriod
31 * @throws InvalidArgumentException
32 */
33 public static function create($data)
34 {
35 $eventPeriod = new EventPeriod();
36
37 if (!empty($data['id'])) {
38 $eventPeriod->setId(new Id($data['id']));
39 }
40
41 if (!empty($data['eventId'])) {
42 $eventPeriod->setEventId(new Id($data['eventId']));
43 }
44
45 if (isset($data['periodStart'])) {
46 $eventPeriod->setPeriodStart(new DateTimeValue(DateTimeService::getCustomDateTimeObject($data['periodStart'])));
47 }
48
49 if (isset($data['periodEnd'])) {
50 $eventPeriod->setPeriodEnd(new DateTimeValue(DateTimeService::getCustomDateTimeObject($data['periodEnd'])));
51 }
52
53 if (!empty($data['zoomMeeting']) && !empty($data['zoomMeeting']['id'])) {
54 $zoomMeeting = ZoomFactory::create(
55 $data['zoomMeeting']
56 );
57
58 $eventPeriod->setZoomMeeting($zoomMeeting);
59 }
60
61 if (isset($data['lessonSpace']) && !empty($data['lessonSpace'])) {
62 $eventPeriod->setLessonSpace($data['lessonSpace']);
63 }
64
65 if (!empty($data['googleCalendarEventId'])) {
66 $eventPeriod->setGoogleCalendarEventId(new Token($data['googleCalendarEventId']));
67 }
68
69 if (!empty($data['googleMeetUrl'])) {
70 $eventPeriod->setGoogleMeetUrl($data['googleMeetUrl']);
71 }
72
73 if (!empty($data['outlookCalendarEventId'])) {
74 $eventPeriod->setOutlookCalendarEventId(new Label($data['outlookCalendarEventId']));
75 }
76
77 if (!empty($data['microsoftTeamsUrl'])) {
78 $eventPeriod->setMicrosoftTeamsUrl($data['microsoftTeamsUrl']);
79 }
80
81 if (!empty($data['appleCalendarEventId'])) {
82 $eventPeriod->setAppleCalendarEventId(new Label($data['appleCalendarEventId']));
83 }
84
85 return $eventPeriod;
86 }
87 }
88