• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/Timeline/Item/Activity/Call.php
  • Класс: Bitrix\Crm\Service\Timeline\Item\Activity\Call
  • Вызов: Call::getLogo
public function getLogo(): ?Layout\Body\Logo
{
	$recordUrls = array_unique(array_column($this->fetchAudioRecordList(), 'VIEW_URL'));
	$isAudioExist = !empty($recordUrls);

	$changePlayerStateAction = (new JsEvent('Call:ChangePlayerState'))
		->addActionParamInt('recordId', $this->getAssociatedEntityModel()->get('ID'))
		->addActionParamString('recordUri', $isAudioExist ? (string)$recordUrls[0] : null)
	;

	switch ($this->fetchDirection())
	{
		case CCrmActivityDirection::Incoming:
			if ($this->isMissedCall())
			{
				return $isAudioExist
					? (Layout\Common\Logo::getInstance(Layout\Common\Logo::CALL_PLAY_RECORD))
						->createLogo()
						->setAction($changePlayerStateAction)
					: Layout\Common\Logo::getInstance(Layout\Common\Logo::CALL_DEFAULT)
						->createLogo()
						->setIconType(Layout\Body\Logo::ICON_TYPE_FAILURE)
						->setAdditionalIconType(Layout\Body\Logo::ICON_TYPE_FAILURE)
						->setAdditionalIconCode('arrow')
				;
			}

			return $isAudioExist
				? Layout\Common\Logo::getInstance(Layout\Common\Logo::CALL_PLAY_RECORD)
					->createLogo()
					->setAction($changePlayerStateAction)
				: Layout\Common\Logo::getInstance(Layout\Common\Logo::CALL_INCOMING)
					->createLogo()
			;

		case CCrmActivityDirection::Outgoing:
			$logo = $isAudioExist
				? Layout\Common\Logo::getInstance(Layout\Common\Logo::CALL_PLAY_RECORD)
					->createLogo()->setAction($changePlayerStateAction)
				: Layout\Common\Logo::getInstance(Layout\Common\Logo::CALL_OUTGOING)
					->createLogo()
			;

			if (!$this->isPlanned() && !$this->fetchInfo()['SUCCESSFUL'])
			{
				$logo
					->setAdditionalIconType(Layout\Body\Logo::ICON_TYPE_FAILURE)
					->setAdditionalIconCode('cross')
				;
			}

			return $logo;
	}

	return  Layout\Common\Logo::getInstance(Layout\Common\Logo::CALL_DEFAULT)
		->createLogo();
}