3namespace Bitrix\Calendar\Core\Builders;
5use Bitrix\Calendar\Core\Base\Date;
6use Bitrix\Calendar\Core\Base\DateTimeZone;
7use Bitrix\Calendar\Core\Builders\EventOption\EventOptionBuilderFromArray;
8use Bitrix\Calendar\Core\Event\Event;
9use Bitrix\Calendar\Core\Event\Properties\AttendeeCollection;
10use Bitrix\Calendar\Core\Event\Properties\ExcludedDatesCollection;
11use Bitrix\Calendar\Core\Event\Properties\Location;
12use Bitrix\Calendar\Core\Event\Properties\MeetingDescription;
13use Bitrix\Calendar\Core\Event\Properties\RecurringEventRules;
14use Bitrix\Calendar\Core\Event\Properties\Relations;
15use Bitrix\Calendar\Core\Event\Properties\RemindCollection;
16use Bitrix\Calendar\Core\eventoption\EventOption;
17use Bitrix\Calendar\Core\Mappers\Factory;
18use Bitrix\Calendar\Core\Role\Role;
19use Bitrix\Calendar\Core\Section\Section;
20use Bitrix\Main\DI\ServiceLocator;
21use Bitrix\Main\ObjectException;
25 private Event $originalEvent;
29 $this->originalEvent = $originalEvent;
35 protected function getId(): ?int
37 return $this->originalEvent->getId();
45 return $this->originalEvent->getParentId();
53 return $this->originalEvent->getName() ??
'';
61 return $this->originalEvent->getStartTimeZone()
62 ?
new DateTimeZone(clone $this->originalEvent->getStartTimeZone()->getTimeZone())
72 return $this->originalEvent->getEndTimeZone()
73 ?
new DateTimeZone(clone $this->originalEvent->getEndTimeZone()->getTimeZone())
85 if ($this->originalEvent->getRecurringRule())
87 $result = clone $this->originalEvent->getRecurringRule();
104 return $this->originalEvent->getLocation() ? clone $this->originalEvent->getLocation() :
null;
114 return $this->cloneDate($this->originalEvent->getStart());
124 return $this->cloneDate($this->originalEvent->getEnd());
132 return $this->originalEvent->isFullDayEvent();
140 return $this->originalEvent->getAttendeesCollection();
151 if ($this->originalEvent->getRemindCollection())
154 ->setCollection($this->originalEvent->getRemindCollection()->getCollection())
155 ->setSingle($this->originalEvent->getRemindCollection()->isSingle())
157 if ($this->originalEvent->getRemindCollection()->getEventStart())
159 $result->setEventStart($this->cloneDate($this->originalEvent->getRemindCollection()->getEventStart()));
161 else if ($this->originalEvent->getStart())
163 $result->setEventStart($this->cloneDate($this->originalEvent->getStart()));
175 return $this->originalEvent->getDescription();
183 return $this->originalEvent->getSection();
191 return $this->originalEvent->getColor();
199 return $this->originalEvent->getTransparent();
207 return $this->originalEvent->getImportance();
215 return $this->originalEvent->getAccessibility();
223 return $this->originalEvent->isPrivate();
231 return $this->cloneRole($this->originalEvent->getEventHost());
239 return $this->cloneRole($this->originalEvent->getCreator());
247 return $this->cloneRole($this->originalEvent->getOwner());
255 return $this->originalEvent->getMeetingDescription()
256 ? clone $this->originalEvent->getMeetingDescription()
265 return $this->originalEvent->getVersion();
273 return $this->originalEvent->getCalendarType();
281 return $this->originalEvent->getSpecialLabel();
289 return $this->originalEvent->getUid();
297 return $this->originalEvent->isDeleted();
305 return $this->originalEvent->isActive();
313 return $this->originalEvent->getRecurrenceId();
323 return $this->cloneDate($this->originalEvent->getOriginalDateFrom());
333 return $this->cloneDate($this->originalEvent->getDateCreate());
343 return $this->cloneDate($this->originalEvent->getDateModified());
351 return clone $this->originalEvent->getExcludedDateCollection();
359 return $this->originalEvent->isMeeting();
367 return $this->originalEvent->getMeetingStatus();
375 return $this->originalEvent->getRelations()
376 ? clone $this->originalEvent->getRelations()
386 private function cloneDate(?
Date $date): ?
Date
390 ? Date::createDateTimeFromFormat($date->
format($format), $format)
400 private function cloneRole(?
Role $role): ?
Role
403 new Role($role->getRoleEntity())
__construct(Event $originalEvent)