• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/session.php
  • Класс: BitrixImOpenLinesSession
  • Вызов: Session::closeDuplicate
static function closeDuplicate($duplicateSession, $actualSession)
{
	$result = new Result();

	$resultSessionUpdate = ModelSessionTable::update($duplicateSession['ID'], [
		'STATUS' => self::STATUS_DUPLICATE,
		'WAIT_ANSWER' => 'N',
		'CLOSED' => 'Y'
	]);

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

	$resultSessionCheckDelete = ModelSessionCheckTable::delete($duplicateSession['ID']);

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

	if (
		$actualSession['CHAT_ID'] != $duplicateSession['CHAT_ID']
		|| $actualSession['OPERATOR_ID']
		&& $duplicateSession['OPERATOR_ID']
		&& $actualSession['OPERATOR_ID'] != $duplicateSession['OPERATOR_ID']
	)
	{
		$chatManager = new Chat($duplicateSession['CHAT_ID']);
		$chatManager->leave($duplicateSession['OPERATOR_ID']);
	}

	//statistics
	ConfigStatistic::getInstance((int)$duplicateSession['CONFIG_ID'])->addClosed()->deleteInWork();

	return $result;
}