• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Link/Calendar/CalendarService.php
  • Класс: BitrixImV2LinkCalendarCalendarService
  • Вызов: CalendarService::registerCalendar
public function registerCalendar(int $chatId, ?int $messageId, BitrixImV2EntityCalendarCalendarItem $calendar): Result
{
	$result = new Result();

	$userId = $this->getContext()->getUserId();

	$calendarLink = new CalendarItem();
	$calendarLink->setEntity($calendar)->setChatId($chatId)->setAuthorId($userId);

	if (isset($messageId))
	{
		$calendarLink->setMessageId($messageId);
	}

	$sendMessageResult = $this->sendMessageAboutCalendar($calendarLink, $chatId);

	if (!$sendMessageResult->isSuccess())
	{
		$result->addErrors($sendMessageResult->getErrors());
	}

	$systemMessageId = $sendMessageResult->getResult();

	$calendarLink->setMessageId($messageId ?: $systemMessageId);
	$saveResult = $calendarLink->save();

	if (!$saveResult->isSuccess())
	{
		return $result->addErrors($saveResult->getErrors());
	}

	Push::getInstance()
		->setContext($this->context)
		->sendFull($calendarLink, self::ADD_CALENDAR_EVENT, ['RECIPIENT' => $calendar->getMembersIds()])
	;

	return $result;
}