• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/controller/user/stresslevel.php
  • Класс: BitrixSocialnetworkControllerUserStressLevel
  • Вызов: StressLevel::addAction
public function addAction(array $fields = []): ?array
{
	$value = (
		isset($fields['value'])
			? (int)$fields['value']
			: false
	);

	if ($value === false)
	{
		$this->addError(new Error(Loc::getMessage('SONET_CONTROLLER_USER_STRESSLEVEL_ADD_NOSTRESS'), 'SONET_CONTROLLER_USER_STRESSLEVEL_ADD_NOSTRESS'));
		return null;
	}

	$userId = (int)(
		isset($fields['userId'])
		&& $this->isCurrentUserAdmin()
			? $fields['userId']
			: $this->getCurrentUser()->getId()
	);

	if (
		!$this->isCurrentUserAdmin()
		&& $userId !== (int)$this->getCurrentUser()->getId()
	)
	{
		$this->addError(new Error(Loc::getMessage('SONET_CONTROLLER_USER_STRESSLEVEL_NO_PERMISSIONS'), 'SONET_CONTROLLER_USER_STRESSLEVEL_NO_PERMISSIONS'));
		return null;
	}

	Loader::includeModule('socialnetwork');

	$disclaimerData = $this->getDisclaimer([
		'userId' => $userId
	]);
	if (empty($disclaimerData))
	{
		$this->addError(new Error(Loc::getMessage('SONET_CONTROLLER_USER_STRESSLEVEL_NO_SIGNED_DISCLAIMER'), 'SONET_CONTROLLER_USER_STRESSLEVEL_NO_SIGNED_DISCLAIMER'));
		return null;
	}

	UserWelltoryTable::add([
		'USER_ID' => $userId,
		'STRESS' => $value,
		'STRESS_TYPE' => ($fields['type'] ?? ''),
		'STRESS_COMMENT' => ($fields['comment'] ?? ''),
		'DATE_MEASURE' => new BitrixMainDBSqlExpression(BitrixMainApplication::getConnection()->getSqlHelper()->getCurrentDateTimeFunction()),
		'HASH' => ($fields['hash'] ?? '')
	]);

	return [
		'success' => true,
	];
}