Your IP : 18.119.29.99


Current Path : /var/www/axolotl/data/www/voronezh.axolotls.ru/bitrix/modules/imconnector/lib/
Upload File :
Current File : /var/www/axolotl/data/www/voronezh.axolotls.ru/bitrix/modules/imconnector/lib/chat.php

<?php
/**
 * Created by PhpStorm.
 * User: varfolomeev
 * Date: 22.01.2019
 * Time: 12:18
 */

namespace Bitrix\ImConnector;

use \Bitrix\ImConnector\Model\ChatLastMessageTable;

class Chat
{
	/**
	 * @param $fields
	 *
	 * @return \Bitrix\Main\ORM\Data\AddResult|\Bitrix\Main\ORM\Data\UpdateResult
	 * @throws \Bitrix\Main\ArgumentException
	 * @throws \Bitrix\Main\ObjectPropertyException
	 * @throws \Bitrix\Main\SystemException
	 */
	public static function setLastMessage($fields)
	{
		$lastMessage = self::getLastMessage($fields['EXTERNAL_CHAT_ID'], $fields['CONNECTOR']);
		if (!empty($lastMessage['ID']))
		{
			$result = ChatLastMessageTable::update(
				$lastMessage['ID'],
				array(
					'EXTERNAL_MESSAGE_ID' => $fields['EXTERNAL_MESSAGE_ID']
				)
			);
		}
		else
		{
			$result = ChatLastMessageTable::add(
				array(
					'EXTERNAL_CHAT_ID' => $fields['EXTERNAL_CHAT_ID'],
					'CONNECTOR' => $fields['CONNECTOR'],
					'EXTERNAL_MESSAGE_ID' => $fields['EXTERNAL_MESSAGE_ID']
				)
			);
		}
		return $result;
	}

	/**
	 * @param $externalChatId
	 * @param $connector
	 *
	 * @return mixed
	 * @throws \Bitrix\Main\ArgumentException
	 * @throws \Bitrix\Main\ObjectPropertyException
	 * @throws \Bitrix\Main\SystemException
	 */
	public static function getChatLastMessageId($externalChatId, $connector)
	{
		$message = self::getLastMessage($externalChatId, $connector);

		return $message['EXTERNAL_MESSAGE_ID'];
	}

	/**
	 * @param $externalChatId
	 * @param $connector
	 *
	 * @return array|false
	 * @throws \Bitrix\Main\ArgumentException
	 * @throws \Bitrix\Main\ObjectPropertyException
	 * @throws \Bitrix\Main\SystemException
	 */
	public static function getLastMessage($externalChatId, $connector)
	{
		$message = ChatLastMessageTable::getList(
			[
				'filter' => [
					'=EXTERNAL_CHAT_ID' => $externalChatId,
					'=CONNECTOR' => $connector
				],
				'limit' => '1',
				'order' => [
					'ID' => 'DESC'
				]
			]
		)->fetch();

		return $message;
	}

	/**
	 * @param $externalChatId
	 * @param $connector
	 *
	 * @throws \Bitrix\Main\ArgumentException
	 * @throws \Bitrix\Main\ObjectPropertyException
	 * @throws \Bitrix\Main\SystemException
	 */
	public static function deleteLastMessage($externalChatId, $connector)
	{
		$lastMessage = self::getLastMessage($externalChatId, $connector);

		if (!empty($lastMessage['ID']))
		{
			ChatLastMessageTable::delete($lastMessage['ID']);
		}
	}
}