• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/bizproc/document/valuecollection/base.php
  • Класс: Bitrix\Crm\Integration\BizProc\Document\ValueCollection\Base
  • Вызов: Base::prepareResourceBookingField
static function prepareResourceBookingField(array &$document, $fieldId): void
{
	if (empty($document[$fieldId]) || !\Bitrix\Main\Loader::includeModule('calendar'))
	{
		return;
	}

	$resourceList = \Bitrix\Calendar\UserField\ResourceBooking::getResourceEntriesList((array)$document[$fieldId]);

	if ($resourceList)
	{
		$dateFrom = $resourceList['DATE_FROM'];
		$dateTo = $resourceList['DATE_TO'];

		if (!\CTimeZone::Enabled())
		{
			$userOffset = \CCalendar::getOffset(\CCalendar::getCurUserId());

			$dateFrom = DateTime::createFromTimestamp(
				\CCalendar::timestamp($resourceList['DATE_FROM']) - $userOffset
			);
			$dateTo = DateTime::createFromTimestamp(
				\CCalendar::timestamp($resourceList['DATE_TO']) - $userOffset
			);
		}

		$document[$fieldId . '.SERVICE_NAME'] = $resourceList['SERVICE_NAME'];
		$document[$fieldId . '.DATE_FROM'] = (string)$dateFrom;
		$document[$fieldId . '.DATE_TO'] = (string)$dateTo;
		$users = [];

		foreach ($resourceList['ENTRIES'] as $entry)
		{
			if ($entry['TYPE'] === 'user')
			{
				$users[] = 'user_' . $entry['RESOURCE_ID'];
			}
		}
		$document[$fieldId . '.USERS'] = $users;
	}
}