Your IP : 18.224.32.56


Current Path : /var/www/www-root/data/www/monolith-realty.ru/bitrix/modules/location/lib/model/
Upload File :
Current File : /var/www/www-root/data/www/monolith-realty.ru/bitrix/modules/location/lib/model/addresstable.php

<?php

namespace Bitrix\Location\Model;

use Bitrix\Main;
use Bitrix\Main\ORM\Fields;
use Bitrix\Main\ORM\Query\Join;
use Bitrix\Main\ORM\Event;
use Bitrix\Main\ORM\EventResult;

/**
 * Class AddressTable
 * @package Bitrix\Location\Model
 * @internal
 *
 * DO NOT WRITE ANYTHING BELOW THIS
 *
 * <<< ORMENTITYANNOTATION
 * @method static EO_Address_Query query()
 * @method static EO_Address_Result getByPrimary($primary, array $parameters = array())
 * @method static EO_Address_Result getById($id)
 * @method static EO_Address_Result getList(array $parameters = array())
 * @method static EO_Address_Entity getEntity()
 * @method static \Bitrix\Location\Model\EO_Address createObject($setDefaultValues = true)
 * @method static \Bitrix\Location\Model\EO_Address_Collection createCollection()
 * @method static \Bitrix\Location\Model\EO_Address wakeUpObject($row)
 * @method static \Bitrix\Location\Model\EO_Address_Collection wakeUpCollection($rows)
 */
class AddressTable extends Main\ORM\Data\DataManager
{
	/**
	 * Returns DB table name for entity.
	 *
	 * @return string
	 */
	public static function getTableName()
	{
		return 'b_location_address';
	}

	/**
	 * @return array
	 * @throws Main\ArgumentException
	 * @throws Main\ArgumentTypeException
	 * @throws Main\SystemException
	 */
	public static function getMap()
	{
		return array(
			(new Fields\IntegerField('ID'))
				->configurePrimary(true)
				->configureAutocomplete(true),

			new Fields\IntegerField('LOCATION_ID'),

			(new Fields\StringField('LANGUAGE_ID'))
				->configureRequired(true)
				->addValidator(new Main\ORM\Fields\Validators\LengthValidator(2, 2)),

			new Fields\FloatField('LATITUDE', ['scale' => 6]),
			new Fields\FloatField('LONGITUDE', ['scale' => 6]),

			(new Fields\Relations\OneToMany('FIELDS', AddressFieldTable::class, 'ADDRESS'))
				->configureJoinType('left'),

			(new Fields\Relations\OneToMany('LINKS', AddressLinkTable::class, 'ADDRESS'))
				->configureJoinType('left'),

			(new Fields\Relations\Reference('LOCATION', LocationTable::class,
				Join::on('this.LOCATION_ID', 'ref.ID')))
				->configureJoinType('left')
		);
	}

	public static function onBeforeAdd(Event $event): EventResult
	{
		$result = new EventResult();
		$result->unsetField('ID');

		return $result;
	}
}