Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/components/bitrix/catalog.productcard.reserved.deal.list/
Upload File :
Current File : /var/www/homesaver/www/bitrix/components/bitrix/catalog.productcard.reserved.deal.list/class.php

<?php

use Bitrix\Catalog\ProductTable;
use Bitrix\Main\Localization\Loc;

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
{
	die();
}

Loc::loadMessages(__FILE__);

class ReservedDealListComponent extends CBitrixComponent
{
	public function onPrepareComponentParams($arParams)
	{
		$arParams['PRODUCT_ID'] = (int)$arParams['PRODUCT_ID'];
		$arParams['STORE_ID'] = (int)$arParams['STORE_ID'];
		return parent::onPrepareComponentParams($arParams);
	}

	public function executeComponent()
	{
		if (!\Bitrix\Main\Loader::includeModule('crm'))
		{
			ShowError(Loc::getMessage('CRM_MODULE_NOT_INSTALLED'));
			return;
		}

		$productId = $this->arParams['PRODUCT_ID'];
		$productFields = ProductTable::getRow([
			'select' => ['ID', 'TYPE', 'NAME' => 'IBLOCK_ELEMENT.NAME'],
			'filter' => ['=ID' => $productId],
		]);
		if (!$productFields)
		{
			ShowError(Loc::getMessage('PRODUCT_NOT_FOUND'));
			return;
		}

		$dealsFilter = [
			'=IS_PRODUCT_RESERVED' => 'Y',
		];

		$productType = (int)$productFields['TYPE'];
		if ($productType === ProductTable::TYPE_SKU)
		{
			$offerIds = \CCatalogSku::getOffersList($productId, 0, [], ['ID']);
			$offerIds = array_column($offerIds[$productId], 'ID');
			if (!empty($offerIds))
			{
				$dealsFilter['=PRODUCT_ROW_PRODUCT_ID'] = $offerIds;
			}
		}
		else
		{
			$dealsFilter['=PRODUCT_ROW_PRODUCT_ID'] = $productId;
		}

		if ($this->arParams['STORE_ID'] > 0)
		{
			$dealsFilter['=RESERVE_STORE_ID'] = $this->arParams['STORE_ID'];
		}

		$this->arResult['DEALS_FILTER'] = $dealsFilter;
		$this->arResult['PRODUCT_NAME'] = $productFields['NAME'];

		$this->includeComponentTemplate();
	}
}