PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / trunk
Booking for Appointments and Events Calendar – Amelia vtrunk
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 6 months ago CustomerBookingEventTicketFactory.php 6 months ago EventFactory.php 2 weeks ago EventPeriodFactory.php 6 months ago EventTagFactory.php 6 months ago EventTicketFactory.php 6 months ago RecurringFactory.php 6 months ago
EventPeriodFactory.php
88 lines
1 <?php
2
3 /**
4 * @copyright © Melograno Ventures. All rights reserved.
5 * @licence See LICENCE.md for license details.
6 */
7
8 namespace AmeliaBooking\Domain\Factory\Booking\Event;
9
10 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
11 use AmeliaBooking\Domain\Entity\Booking\Event\EventPeriod;
12 use AmeliaBooking\Domain\Services\DateTime\DateTimeService;
13 use AmeliaBooking\Domain\ValueObjects\DateTime\DateTimeValue;
14 use AmeliaBooking\Domain\ValueObjects\Number\Integer\Id;
15 use AmeliaBooking\Domain\ValueObjects\String\Label;
16 use AmeliaBooking\Domain\ValueObjects\String\Url;
17 use AmeliaBooking\Domain\Factory\Zoom\ZoomFactory;
18 use AmeliaBooking\Domain\ValueObjects\String\Token;
19
20 /**
21 * Class EventPeriodFactory
22 *
23 * @package AmeliaBooking\Domain\Factory\Booking\Event
24 */
25 class EventPeriodFactory
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