• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/session/update.php
  • Класс: BitrixImOpenLinesSessionUpdate
  • Вызов: Update::updateSessionCheck
private function updateSessionCheck(): void
{
	if (
		array_key_exists('SEND_NO_ANSWER_TEXT', $this->newData)
		&& $this->newData['SEND_NO_ANSWER_TEXT'] === 'Y'
	)
	{
		$this->updateCheckTable['DATE_NO_ANSWER'] = null;
	}

	if (!empty($this->updateCheckTable))
	{
		if (
			isset($this->updateCheckTable['DATE_CLOSE'])
			&& $this->session->getSessionField('CRM_ACTIVITY_ID') > 0
			&& (
				!isset($this->newData['CLOSED'])
				|| $this->newData['CLOSED'] === 'N'
			)
		)
		{
			if (
				(
					$this->session->getSessionField('STATUS') >= Session::STATUS_ANSWER
					&& !in_array($this->session->getSessionField('STATUS'), [Session::STATUS_CLIENT, Session::STATUS_CLIENT_AFTER_OPERATOR])
				)
				||
				(
					$this->newData['STATUS'] >= Session::STATUS_ANSWER
					&& !in_array($this->newData['STATUS'], [Session::STATUS_CLIENT, Session::STATUS_CLIENT_AFTER_OPERATOR])
				)
			)
			{
				if ($this->updateCheckTable['DATE_CLOSE'])
				{
					$dateCheckClose = clone $this->updateCheckTable['DATE_CLOSE'];
				}
				else
				{
					$dateCheckClose = new DateTime();
				}
				$dateCheckClose->add($this->session->getConfig('AUTO_CLOSE_TIME').' SECONDS');
				$dateCheckClose->add('1 DAY');

				$crmManager = new Crm($this->session);
				if ($crmManager->isLoaded())
				{
					$crmManager->setSessionDataClose($dateCheckClose);
				}
			}
		}
		SessionCheckTable::update($this->session->getSessionField('ID'), $this->updateCheckTable);
	}

	foreach ($this->updateCheckTable as $key => $value)
	{
		$this->session->setSessionField('CHECK_' . $key, $value);
	}
}