Your IP : 3.147.104.221


Current Path : /var/www/axolotl/data/www/msk.axolotls.ru/bitrix/modules/imopenlines/lib/model/
Upload File :
Current File : /var/www/axolotl/data/www/msk.axolotls.ru/bitrix/modules/imopenlines/lib/model/config.php

<?php
namespace Bitrix\ImOpenLines\Model;

use \Bitrix\Main,
	\Bitrix\Main\Type\DateTime,
	\Bitrix\Main\Localization\Loc,
	\Bitrix\Main\Entity\Validator,
	\Bitrix\Main\ORM\Fields\StringField,
	\Bitrix\Main\ORM\Fields\BooleanField,
	\Bitrix\Main\ORM\Fields\IntegerField;

use \Bitrix\ImOpenLines\Config;

Loc::loadMessages(__FILE__);

/**
 * Class ConfigTable
 *
 * @package Bitrix\Imopenlines
 **/

class ConfigTable extends Main\Entity\DataManager
{
	/**
	 * Returns DB table name for entity.
	 *
	 * @return string
	 */
	public static function getTableName()
	{
		return 'b_imopenlines_config';
	}

	/**
	 * Returns entity map definition.
	 *
	 * @return array
	 * @throws Main\SystemException
	 */
	public static function getMap()
	{
		return array(
			'ID' => array(
				'data_type' => 'integer',
				'primary' => true,
				'autocomplete' => true,
				'title' => Loc::getMessage('CONFIG_ENTITY_ID_FIELD'),
			),
			new BooleanField('ACTIVE', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_ACTIVE_FIELD'),
				'default_value' => 'Y',
			]),
			new StringField('LINE_NAME', [
				'validation' => [__CLASS__, 'validateText255'],
				'title' => Loc::getMessage('CONFIG_ENTITY_LINE_NAME_FIELD'),
			]),
			new BooleanField('CRM', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_CRM_FIELD'),
				'default_value' => 'Y',
			]),
			new StringField('CRM_CREATE', [
				'validation' => [__CLASS__, 'validateText50'],
				'title' => Loc::getMessage('CONFIG_ENTITY_CRM_CREATE_FIELD'),
				'default_value' => 'lead',
			]),
			new BooleanField('CRM_FORWARD', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_CRM_FORWARD_FIELD'),
				'default_value' => 'Y',
			]),
			new BooleanField('CRM_TRANSFER_CHANGE', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_CRM_TRANSFER_CHANGE_FIELD'),
				'default_value' => 'Y',
			]),
			new StringField('CRM_SOURCE', [
				'validation' => [__CLASS__, 'validateText50'],
				'title' => Loc::getMessage('CONFIG_ENTITY_CRM_SOURCE_FIELD'),
				'default_value' => 'create',
			]),
			'QUEUE_TIME' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_QUEUE_TIME_FIELD_NEW'),
				'default_value' => '60',
			),
//			'CRM_FORM_TO_USE' => [
//				'data_type' => 'integer',
//				'title' => 'Which CRM-form to use',
//				'default_value' => '0',
//			],
			'NO_ANSWER_TIME' => [
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_NO_ANSWER_TIME_FIELD'),
				'default_value' => '60',
			],
			new StringField('QUEUE_TYPE', [
				'validation' => [__CLASS__, 'validateText50'],
				'title' => Loc::getMessage('CONFIG_ENTITY_QUEUE_TYPE_FIELD'),
				'default_value' => 'all',
			]),
			new BooleanField('CHECK_AVAILABLE', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_CHECK_AVAILABLE_FIELD'),
				'default_value' => 'N',
			]),
			new BooleanField('WATCH_TYPING', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WATCH_TYPING_FIELD'),
				'default_value' => 'N',
			]),
			new BooleanField('WELCOME_BOT_ENABLE', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WELCOME_BOT_ENABLE_FIELD'),
				'default_value' => 'N',
			]),
			new BooleanField('WELCOME_MESSAGE', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WELCOME_MESSAGE_FIELD'),
				'default_value' => 'Y',
			]),
			'WELCOME_MESSAGE_TEXT' => array(
				'data_type' => 'text',
				'title' => Loc::getMessage('CONFIG_ENTITY_WELCOME_MESSAGE_TEXT_FIELD_NEW'),
			),
			new BooleanField('VOTE_MESSAGE', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_VOTE_MESSAGE_FIELD'),
				'default_value' => 'Y',
			]),
			new BooleanField('VOTE_BEFORE_FINISH', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_VOTE_MESSAGE_FIELD'),
				'default_value' => 'Y',
			]),
			new BooleanField('VOTE_CLOSING_DELAY', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_VOTE_CLOSING_DELAY_FIELD_NEW'),
				'default_value' => 'N',
			]),
			'VOTE_MESSAGE_1_TEXT' => array(
				'data_type' => 'text',
				'title' => Loc::getMessage('CONFIG_ENTITY_VOTE_MESSAGE_1_TEXT_FIELD'),
			),
			'VOTE_MESSAGE_1_LIKE' => array(
				'data_type' => 'text',
				'title' => Loc::getMessage('CONFIG_ENTITY_VOTE_MESSAGE_1_LIKE_FIELD'),
			),
			'VOTE_MESSAGE_1_DISLIKE' => array(
				'data_type' => 'text',
				'title' => Loc::getMessage('CONFIG_ENTITY_VOTE_MESSAGE_1_DISLIKE_FIELD'),
			),
			'VOTE_MESSAGE_2_TEXT' => array(
				'data_type' => 'text',
				'title' => Loc::getMessage('CONFIG_ENTITY_VOTE_MESSAGE_2_TEXT_FIELD'),
			),
			'VOTE_MESSAGE_2_LIKE' => array(
				'data_type' => 'text',
				'title' => Loc::getMessage('CONFIG_ENTITY_VOTE_MESSAGE_2_LIKE_FIELD'),
			),
			'VOTE_MESSAGE_2_DISLIKE' => array(
				'data_type' => 'text',
				'title' => Loc::getMessage('CONFIG_ENTITY_VOTE_MESSAGE_2_DISLIKE_FIELD'),
			),
			new BooleanField('AGREEMENT_MESSAGE', [
				'values' => ['N', 'Y'],
				'default_value' => 'N',
			]),
			'AGREEMENT_ID' => array(
				'data_type' => 'integer',
				'default_value' => '0',
			),
			new BooleanField('CATEGORY_ENABLE', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_CATEGORY_ENABLE_FIELD'),
				'default_value' => 'N',
			]),
			'CATEGORY_ID' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_CATEGORY_ID_FIELD'),
				'default_value' => '0',
			),
			new StringField('WELCOME_BOT_JOIN', [
				'validation' => [__CLASS__, 'validateText50'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WELCOME_BOT_JOIN_FIELD'),
				'default_value' => 'first',
			]),
			'WELCOME_BOT_ID' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_BOT_ID_FIELD'),
				'default_value' => '0',
			),
			'WELCOME_BOT_TIME' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_BOT_TIME_FIELD'),
				'default_value' => '600',
			),
			new StringField('WELCOME_BOT_LEFT', [
				'validation' => [__CLASS__, 'validateText50'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WELCOME_BOT_LEFT_FIELD'),
				'default_value' => 'queue',
			]),
			new StringField('NO_ANSWER_RULE', [
				'validation' => [__CLASS__, 'validateText50'],
				'title' => Loc::getMessage('CONFIG_ENTITY_NO_ANSWER_RULE_FIELD'),
				'default_value' => Config::RULE_NONE,
				'fetch_data_modification' => function ()
				{
					return [
						function ($value)
						{
							if(Config::RULE_FORM == $value || Config::RULE_QUEUE == $value)
							{
								$value = Config::RULE_NONE;
							}

							return $value;
						}
					];
				}
			]),
			'NO_ANSWER_FORM_ID' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_NO_ANSWER_FORM_ID_FIELD'),
				'default_value' => '0',
			),
			'NO_ANSWER_BOT_ID' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_NO_ANSWER_BOT_ID_FIELD'),
				'default_value' => '0',
			),
			'NO_ANSWER_TEXT' => array(
				'data_type' => 'text',
				'title' => Loc::getMessage('CONFIG_ENTITY_NO_ANSWER_TEXT_FIELD'),
			),
			new BooleanField('WORKTIME_ENABLE', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WORKTIME_ENABLE_FIELD'),
				'default_value' => 'N',
			]),
			new StringField('WORKTIME_FROM', [
				'validation' => [__CLASS__, 'validateText5'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WORKTIME_FROM_FIELD'),
				'default_value' => '9',
			]),
			new StringField('WORKTIME_TO', [
				'validation' => [__CLASS__, 'validateText5'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WORKTIME_TO_FIELD'),
				'default_value' => '18.30',
			]),
			new StringField('WORKTIME_TIMEZONE', [
				'validation' => [__CLASS__, 'validateText50'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WORKTIME_TIMEZONE_FIELD'),
			]),
			new StringField('WORKTIME_HOLIDAYS', [
				'validation' => [__CLASS__, 'validateText2000'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WORKTIME_HOLIDAYS_FIELD'),
			]),
			new StringField('WORKTIME_DAYOFF', [
				'validation' => [__CLASS__, 'validateText20'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WORKTIME_DAYOFF_FIELD'),
			]),
			new StringField('WORKTIME_DAYOFF_RULE', [
				'validation' => [__CLASS__, 'validateText50'],
				'title' => Loc::getMessage('CONFIG_ENTITY_WORKTIME_DAYOFF_RULE_FIELD'),
				'default_value' => 'form',
			]),
			'WORKTIME_DAYOFF_FORM_ID' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_WORKTIME_DAYOFF_FORM_ID_FIELD'),
				'default_value' => '0',
			),
			'WORKTIME_DAYOFF_BOT_ID' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_WORKTIME_DAYOFF_BOT_ID_FIELD'),
				'default_value' => '0',
			),
			'WORKTIME_DAYOFF_TEXT' => array(
				'data_type' => 'text',
				'title' => Loc::getMessage('CONFIG_ENTITY_WORKTIME_DAYOFF_TEXT_FIELD'),
			),
			new StringField('CLOSE_RULE', [
				'validation' => [__CLASS__, 'validateText50'],
				'title' => Loc::getMessage('CONFIG_ENTITY_CLOSE_RULE_FIELD'),
				'default_value' => 'text',
			]),
			'CLOSE_FORM_ID' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_CLOSE_FORM_ID_FIELD'),
				'default_value' => '0',
			),
			'CLOSE_BOT_ID' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_CLOSE_BOT_ID_FIELD'),
				'default_value' => '0',
			),
			'CLOSE_TEXT' => array(
				'data_type' => 'text',
				'title' => Loc::getMessage('CONFIG_ENTITY_CLOSE_TEXT_FIELD'),
			),
			'FULL_CLOSE_TIME' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_FULL_CLOSE_TIME_FIELD'),
				'default_value' => '10',
			),
			new StringField('AUTO_CLOSE_RULE', [
				'validation' => [__CLASS__, 'validateText50'],
				'title' => Loc::getMessage('CONFIG_ENTITY_AUTO_CLOSE_RULE_FIELD'),
				'default_value' => 'none',
			]),
			'AUTO_CLOSE_FORM_ID' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_AUTO_CLOSE_FORM_ID_FIELD'),
				'default_value' => '0',
			),
			'AUTO_CLOSE_BOT_ID' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_AUTO_CLOSE_BOT_ID_FIELD'),
				'default_value' => '0',
			),
			'AUTO_CLOSE_TIME' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_AUTO_CLOSE_TIME_FIELD_NEW'),
				'default_value' => '14400',
			),
			'AUTO_CLOSE_TEXT' => array(
				'data_type' => 'text',
				'title' => Loc::getMessage('CONFIG_ENTITY_AUTO_CLOSE_TEXT_FIELD_NEW'),
			),
			'AUTO_EXPIRE_TIME' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_AUTO_EXPIRE_TIME_FIELD'),
				'default_value' => '86400',
			),
			'DATE_CREATE' => array(
				'data_type' => 'datetime',
				'title' => Loc::getMessage('CONFIG_ENTITY_DATE_CREATE_FIELD'),
				'default_value' => array(__CLASS__, 'getCurrentDate'),
			),
			'DATE_MODIFY' => array(
				'data_type' => 'datetime',
				'title' => Loc::getMessage('CONFIG_ENTITY_DATE_MODIFY_FIELD'),
				'default_value' => array(__CLASS__, 'getCurrentDate'),
			),
			'MODIFY_USER_ID' => array(
				'data_type' => 'integer',
				'required' => true,
				'title' => Loc::getMessage('CONFIG_ENTITY_MODIFY_USER_ID_FIELD'),
			),
			new BooleanField('TEMPORARY', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_TEMPORARY_FIELD'),
				'default_value' => 'Y',
			]),
			new StringField('XML_ID', [
				'validation' => [__CLASS__, 'validateText255'],
			]),
			new StringField('LANGUAGE_ID', [
				'validation' => [__CLASS__, 'validateText2'],
			]),
			'STATISTIC' => array(
				'data_type' => 'Bitrix\ImOpenLines\Model\ConfigStatistic',
				'reference' => array('=this.ID' => 'ref.CONFIG_ID')
			),
			'QUICK_ANSWERS_IBLOCK_ID' => array(
				'data_type' => 'integer',
			),
			'SESSION_PRIORITY' => array(
				'data_type' => 'integer',
				'default_value' => 0,
			),
			new StringField('TYPE_MAX_CHAT', [
				'validation' => [__CLASS__, 'validateText50'],
				'default_value' => 'ANSWERED_NEW',
			]),
			'MAX_CHAT' => array(
				'data_type' => 'integer',
				'default_value' => '0',
			),
			new StringField('OPERATOR_DATA', [
				'validation' => [__CLASS__, 'validateText50'],
				'title' => Loc::getMessage('CONFIG_ENTITY_OPERATOR_DATA_FIELD'),
				'default_value' => 'profile',
			]),
			new StringField('DEFAULT_OPERATOR_DATA', [
				'title' => Loc::getMessage('CONFIG_ENTITY_DEFAULT_OPERATOR_DATA_FIELD'),
				'serialized' => true
			]),
			'KPI_FIRST_ANSWER_TIME' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_KPI_FIRST_ANSWER_TIME'),
				'default_value' => 0,
			),
			new BooleanField('KPI_FIRST_ANSWER_ALERT', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_KPI_ANSWER_ALERT'),
				'default_value' => 'N',
			]),
			'KPI_FIRST_ANSWER_LIST' => array(
				'data_type' => 'string',
				'title' => Loc::getMessage('CONFIG_ENTITY_KPI_ANSWER_LIST'),
				'serialized' => true,
			),
			'KPI_FIRST_ANSWER_TEXT' => array(
				'data_type' => 'string',
				'title' => Loc::getMessage('CONFIG_ENTITY_KPI_ANSWER_TEXT')
			),
			'KPI_FURTHER_ANSWER_TIME' => array(
				'data_type' => 'integer',
				'title' => Loc::getMessage('CONFIG_ENTITY_KPI_FURTHER_ANSWER_TIME'),
				'default_value' => 0,
			),
			new BooleanField('KPI_FURTHER_ANSWER_ALERT', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_KPI_ANSWER_ALERT'),
				'default_value' => 'N',
			]),
			'KPI_FURTHER_ANSWER_LIST' => array(
				'data_type' => 'string',
				'title' => Loc::getMessage('CONFIG_ENTITY_KPI_ANSWER_LIST'),
				'serialized' => true,
			),
			'KPI_FURTHER_ANSWER_TEXT' => array(
				'data_type' => 'string',
				'title' => Loc::getMessage('CONFIG_ENTITY_KPI_ANSWER_TEXT')
			),
			new BooleanField('KPI_CHECK_OPERATOR_ACTIVITY', [
				'values' => ['N', 'Y'],
				'title' => Loc::getMessage('CONFIG_ENTITY_KPI_CHECK_OPERATOR_ACTIVITY'),
				'default_value' => 'N',
			])
		);
	}

	/**
	 * Returns validators for a text field of up to 2000 characters.
	 *
	 * @return array
	 * @throws Main\ArgumentTypeException
	 */
	public static function validateText2000()
	{
		return [
			new Validator\Length(null, 2000),
		];
	}
	/**
	 * Returns validators for a text field of up to 255 characters.
	 *
	 * @return array
	 * @throws Main\ArgumentTypeException
	 */
	public static function validateText255()
	{
		return [
			new Validator\Length(null, 255),
		];
	}
	/**
	 * Returns validators for a text field of up to 50 characters.
	 *
	 * @return array
	 * @throws Main\ArgumentTypeException
	 */
	public static function validateText50()
	{
		return [
			new Validator\Length(null, 50),
		];
	}
	/**
	 * Returns validators for a text field of up to 20 characters.
	 *
	 * @return array
	 * @throws Main\ArgumentTypeException
	 */
	public static function validateText20()
	{
		return [
			new Validator\Length(null, 20),
		];
	}
	/**
	 * Returns validators for a text field of up to 5 characters.
	 *
	 * @return array
	 * @throws Main\ArgumentTypeException
	 */
	public static function validateText5()
	{
		return [
			new Validator\Length(null, 5),
		];
	}
	/**
	 * Returns validators for a text field of up to 2 characters.
	 *
	 * @return array
	 * @throws Main\ArgumentTypeException
	 */
	public static function validateText2()
	{
		return [
			new Validator\Length(null, 2),
		];
	}

	/**
	 * Return current date for DATE_CREATE field.
	 *
	 * @return DateTime
	 * @throws Main\ObjectException
	 */
	public static function getCurrentDate()
	{
		return new DateTime();
	}
}