4namespace Bitrix\Calendar\Core\Builders;
6use Bitrix\Calendar\Core\Base\BaseException;
7use Bitrix\Calendar\Core\Base\Date;
8use Bitrix\Calendar\Core\Base\DateTimeZone;
9use Bitrix\Calendar\Core\Event;
10use Bitrix\Calendar\Core\Event\Properties\AttendeeCollection;
11use Bitrix\Calendar\Core\Event\Properties\ExcludedDatesCollection;
12use Bitrix\Calendar\Core\Event\Properties\Location;
13use Bitrix\Calendar\Core\Event\Properties\MeetingDescription;
14use Bitrix\Calendar\Core\Event\Properties\RecurringEventRules;
15use Bitrix\Calendar\Core\Event\Properties\Relations;
16use Bitrix\Calendar\Core\Event\Properties\RemindCollection;
17use Bitrix\Calendar\Core\Event\Tools\UidGenerator;
18use Bitrix\Calendar\Core\EventOption\EventOption;
19use Bitrix\Calendar\Core\Mappers\Factory;
20use Bitrix\Calendar\Core\Role\Helper;
21use Bitrix\Calendar\Core\Role\Role;
22use Bitrix\Calendar\Internals\EO_Event;
23use Bitrix\Calendar\Core\Section\Section;
24use Bitrix\Calendar\Util;
25use Bitrix\Main\ArgumentException;
26use Bitrix\Main\DI\ServiceLocator;
27use Bitrix\Main\ObjectException;
28use Bitrix\Main\ObjectNotFoundException;
29use Bitrix\Main\ObjectPropertyException;
30use Bitrix\Main\SystemException;
32use Psr\Container\NotFoundExceptionInterface;
46 $this->
event = $event;
52 protected function getId(): ?int
54 return $this->
event->getId();
59 return $this->
event->getParentId();
64 return $this->
event->getName();
69 if (!$this->event->getTzFrom())
79 if (!$this->event->getTzTo())
93 $rule = CCalendarEvent::convertDateToCulture($this->event->getRrule());
95 CCalendarEvent::ParseRRULE($rule)
110 $this->event->getDateFrom()
115 $this->getStartTimezone() ? $this->getStartTimezone()->getTimeZone()->getName() :
null
125 $this->event->getDateTo()
130 $this->getEndTimezone() ? $this->getEndTimezone()->getTimeZone()->getName() :
null
140 if (empty($this->event->getOriginalDateFrom()))
148 $this->getStartTimezone() ? $this->getStartTimezone()->getTimeZone()->getName() :
null
155 return $this->
event->getDtSkipTime();
161 if (is_string($this->event->getAttendeesCodes()))
163 $collection->setAttendeesCodes(explode(
',', $this->event->getAttendeesCodes()));
167 $collection->setAttendeesId([$this->event->getOwnerId()]);
179 $remindField = $this->
event->getRemind();
180 if (is_string($remindField))
182 $remindField = unserialize($remindField, [
'allowed_classes' =>
false]);
185 if (!is_array($remindField))
193 $collection->setEventStart($eventStart);
194 foreach ($remindField as $remind)
196 if ($remind[
'type'] ===
Event\
Tools\Dictionary::REMIND_UNIT[
'date'])
206 ->setEventStart($eventStart)
212 ->setEventStart($eventStart)
215 $eventStart->toString(),
217 $this->getStartTimezone())
220 ->sub(
"{$remind['before']} days")
221 ->add(
"{$remind['time']} minutes")
223 ->setDaysBefore($remind[
'before'])
229 ->setTimeBeforeEvent(
231 Event\
Tools\Dictionary::REMIND_UNIT[$remind[
'type']]
233 ->setEventStart($eventStart)
243 return $this->
event->getDescription();
256 if ($this->event->getSectionId())
259 $mapper = ServiceLocator::getInstance()->get(
'calendar.service.mappers.factory');
261 $section = $mapper->getSection()->getById($this->event->getSectionId());
268 throw new BuilderException(
'Section ID not found');
273 return $this->
event->getColor();
284 return $this->
event->getImportance();
289 return $this->
event->getAccessibility();
294 return (
bool) $this->
event->getPrivateEvent();
304 if (!$this->event->getMeetingHost())
310 return Helper::getUserRole($this->event->getMeetingHost());
325 if (!$this->event->getCreatedBy())
331 return Helper::getUserRole($this->event->getCreatedBy());
346 if (!$this->event->getOwnerId())
352 return Helper::getRole($this->event->getOwnerId(), $this->event->getCalType());
370 return (
int)$this->
event->getVersion();
378 return $this->
event->getCalType();
386 $uid = $this->
event->getDavXmlId();
387 if (
$uid === (
string)$this->event->getId())
389 $uid = UidGenerator::createInstance()
392 $this->event->getDateFrom()
397 $this->getStartTimezone() ? $this->getStartTimezone()->getTimeZone()->getName() :
null
399 ->setUserId($this->event->getOwnerId())
409 return $this->
event->getDeleted();
414 return $this->
event->getActive();
419 return $this->
event->getRecurrenceId();
424 if (empty($this->event->getDateCreate()))
429 return new Date($this->event->getDateCreate());
434 if (empty($this->event->getTimestampX()))
439 return new Date($this->event->getTimestampX());
452 return (
bool)$this->
event->getIsMeeting();
457 return $this->
event->getMeetingStatus();
470 return $this->
event->getEventType();
475 if ($eventId = $this->event->getId())
478 $mapperFactory = ServiceLocator::getInstance()->get(
'calendar.service.mappers.factory');
480 return $mapperFactory->getEventOption()->getMap([
'=EVENT_ID' => $eventId])->fetch();
488 return $this->
event->getDtLength();
__construct(EO_Event $event)
prepareLocation($locationData='')
prepareRelations($relations)
prepareMeetingDescription($meeting=null)
prepareRecurringRule($ruleData=null)
prepareExcludedDates(string $dates='')
static prepareTimezone(?string $tz=null)
static getDateObject(string $date=null, ?bool $fullDay=true, ?string $tz='UTC')
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)