• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/agent/duplicate/automatic/rebuilduserduplicateindexagent.php
  • Класс: Bitrix\Crm\Agent\Duplicate\Automatic\RebuildUserDuplicateIndexAgent
  • Вызов: RebuildUserDuplicateIndexAgent::loadUserSettings
protected function loadUserSettings(int $entityTypeId, int $userId): ?AutoSearchUserSettings
{
	if (!AutoSearchUserSettings::isEnabled())
	{
		return null;
	}

	$userSettings = AutosearchUserSettingsTable::query()
		->where('ENTITY_TYPE_ID', $entityTypeId)
		->where('USER_ID', $userId)
		->setSelect(['*'])
		->setLimit(1)
		->fetchObject()
	;
	if (!$userSettings)
	{
		return null;
	}

	if (!in_array($userSettings->getStatusId(),
		[AutoSearchUserSettings::STATUS_NEW, AutoSearchUserSettings::STATUS_INDEX_REBUILDING], true))
	{
		return null;
	}

	if (!AutoSearchUserSettings::hasAccess($userSettings->getEntityTypeId(), $userSettings->getUserId()))
	{ // if user has not enough rights, check him tomorrow again:
		$userSettings->setNextExecTime((new DateTime())->add('1 day'));
		if ($userSettings->getStatusId() === AutoSearchUserSettings::STATUS_INDEX_REBUILDING)
		{
			$userSettings->setStatusId(AutoSearchUserSettings::STATUS_NEW);
		}
		$userSettings->save();

		return null;
	}

	return $userSettings;
}