Your IP : 3.129.243.102


Current Path : /home/bitrix/ext_www/dev.ballu.in.ua/import/subscripts/
Upload File :
Current File : /home/bitrix/ext_www/dev.ballu.in.ua/import/subscripts/gate_dealers.php

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
require($_SERVER["DOCUMENT_ROOT"]."/local/php_interface/const.php"); // тут инфоблоки все
/*

$API_URL = 'http://api.rusklimat.ru/v0/ebap/get';
$API_ADDRESS = ['ebasc/get','ebap/get'];
$API_KEY='WWYzZEd3V29jMXFxMDJweTcvSjJOZz09';

function getRest($address, $data = [], $method = "GET", $direct = false) {
	global $API_URL;
	global $API_ADDRESS;
	global $API_KEY;

	if ($direct == false)
		$service = $API_ADDRESS[$address];
	else
		$service = $address;

	$url = $API_URL . $service;

	$opts = array('http' =>
		array(
			'method' => $method,
			'header' => "Authorization: " . $API_KEY,
		)
	);
	if (!empty($data) && $method != "GET") {
		$opts['http']['content'] = http_build_query($data);
	} elseif (!empty($data) && $method == "GET") {
		$toSend = http_build_query($data);
		$url .= "?" . $toSend;
	}

	$context = stream_context_create($opts);
	$result = file_get_contents($url, false, $context);

	if ($result !== false)
		$responce = json_decode($result, true);
	else
		$responce = "error";
	return $responce;
}

$errors = [];
$arCountriesNotAct = $arEquipmentsNotAct = $arShopsNotAct = $arDilersNotAct = array();
$result =  getRest('','','GET',false);
$countries = $result['data']['site']['countries']['country'];
$cities = $result['data']['site']['cities']['city'];
$equipments = $result['data']['site']['equipment']['type'];
$dillers = $result['data']['site']['clients']['client'];

if (CModule::IncludeModule("iblock"))
{
	
	$el = new CIBlockElement;

	// Сначала получаем все данные

	
	// Страны
	$res = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>IBLOCK_ID_DILLER_COUNTRIES), false, false, array('PROPERTY_API_ID','ID'));
	while ($ob = $res->Fetch()) {
		if(!empty($ob['PROPERTY_API_ID_VALUE']))
			$arCountries[$ob['PROPERTY_API_ID_VALUE']] = $ob['ID'];
	}
	$arCountriesNotAct = $arCountries; // для деактивации
	
	// Города
	$res = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>IBLOCK_ID_CITIES), false, false, array('PROPERTY_API_ID','ID', 'NAME'));
	while ($ob = $res->Fetch()) {
		$arCities[$ob['PROPERTY_API_ID_VALUE']] = $ob['ID'];
	}
	//$arCitiesNotAct = $arCities; // для деактивации
	$arCitiesNotAct = array(); // не деактивируем, т.к. есть города нужные для сервисов
	// в идеале их разнести по разным инфоблокам
	
	
	// По дилерам есть 2 варианта загрузки:
	// - когда для дилеров и магазинов есть отдельные инфоблоки (проверям на указание данного инфоблока)
	// - когда все магазины пишутся в один инфоблок
	
	// магазины
	$arShops = array();
	$res = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>IBLOCK_ID_SHOPS), false, false, array('PROPERTY_API_ID','ID'));
	while ($ob = $res->Fetch()) {
		if(!empty($ob['PROPERTY_API_ID_VALUE']))
			$arShops[$ob['PROPERTY_API_ID_VALUE']] = $ob['ID'];
	}
	$arShopsNotAct = $arShops; // для деактивации
	
	// дилеры
	$arDilers = array();
	$res = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>IBLOCK_ID_DILLER), false, false, array('PROPERTY_API_ID','ID'));
	while ($ob = $res->Fetch()) {
		if(!empty($ob['PROPERTY_API_ID_VALUE']))
			$arDilers[$ob['PROPERTY_API_ID_VALUE']] = $ob['ID'];
	}
	$arDilersNotAct = $arDilers; // для деактивации
	
	
	// Страны
	foreach ($countries as $country) {
			
		$PROP = array();
		$PROP["API_ID"] = $country['id'];

		$arLoadProductArray = array(
			"IBLOCK_ID" => IBLOCK_ID_DILLER_COUNTRIES,
			"PROPERTY_VALUES" => $PROP,
			"NAME" => $country['name'],
			"ACTIVE" => "Y"
		);

		if (!$arCountries[$country['id']]) {
			if (!$COUNTRY_ID = $el->Add($arLoadProductArray))
				$errors[$country['name']] = $el->LAST_ERROR;
			else
				$arCountries[$country['id']] = $COUNTRY_ID;
		} else {
			if (!$COUNTRY_ID = $el->Update($arCountries[$country['id']], $arLoadProductArray)) {
				$errors[$country['name']] = $el->LAST_ERROR;
			}
		}
		unset($arCountriesNotAct[$country['id']]); // уберем из деактивации
	}
	
	
	
	
		
	// города
	foreach ($cities as $city) {
		if($city['status'] == 'active') {

			$PROP = array();
			$PROP["API_ID"] = $city['id'];
			$PROP["COUNTRY"] = $arCountries[$city['country_id']];

			$arLoadProductArray = array(
				"IBLOCK_ID" => IBLOCK_ID_CITIES,
				"PROPERTY_VALUES" => $PROP,
				"NAME" => $city['name'],
				"ACTIVE" => "Y"
			);
			
			if (!$arCities[$city['id']]) {
				if (!$CITY_ID = $el->Add($arLoadProductArray))
					$errors[$city['name']] = $el->LAST_ERROR;
				else
					$arCities[$city['id']] = $CITY_ID;
			} else {
				if (!$CITY_ID = $el->Update($arCities[$city['id']], $arLoadProductArray)) {
					$errors[$city['name']] = $el->LAST_ERROR;
				}
			}
			//unset($arCitiesNotAct[$city['id']]); // уберем из деактивации
		}
		else{
			$errors[$city['name']] = 'not active';
		}
	}
	
	
	// товарные категории
	if(!empty($equipments))
	{
		$arEquipments = array();
		$res = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>IBLOCK_ID_EQUIPMENT), false, false, array('PROPERTY_API_ID','ID'));
		while ($ob = $res->Fetch())
		{
			if(!empty($ob['PROPERTY_API_ID_VALUE']))
				$arEquipments[$ob['PROPERTY_API_ID_VALUE']] = $ob['ID'];
		}
		$arEquipmentsNotAct = $arEquipments; // для деактивации
		
		// еще нам нужна привязка к разделам каталога
		$arCatalogSection = array();
		$db_list = CIBlockSection::GetList(Array(), Array('IBLOCK_ID'=>IBLOCK_ID_CATALOG), true);
		while($ar_result = $db_list->Fetch())
			$arCatalogSectionName[$ar_result["NAME"]] = $ar_result["ID"];
		
		
		foreach ($equipments as $equipment)
		{
			$PROP = array();
			$PROP["API_ID"] = $equipment['id'];
			if($arCatalogSectionName[$equipment['_']])
				$PROP["CATALOGUE"] = $arCatalogSectionName[$equipment['_']];

			$arLoadProductArray = array(
				"IBLOCK_ID" => IBLOCK_ID_EQUIPMENT,
				"PROPERTY_VALUES" => $PROP,
				"NAME" => $equipment['_'],
				"ACTIVE" => "Y"
			);
			
			if (!$arEquipments[$equipment['id']])
			{
				if (!$EQUIPMENT_ID = $el->Add($arLoadProductArray))
					$errors[$equipment['name']] = $el->LAST_ERROR;
				else
					$arEquipments[$equipment['id']] = $EQUIPMENT_ID;
			}
			else
			{
				if (!$EQUIPMENT_ID = $el->Update($arEquipments[$equipment['id']], $arLoadProductArray))
					$errors[$equipment['name']] = $el->LAST_ERROR;
			}
			unset($arEquipmentsNotAct[$equipment['id']]); // уберем из деактивации
		}
	}
	
	
	
	
	//  дилеры
	foreach ($dillers as $diler){
		
		$shop_list = array();
		
		// если один магазин
		if (isset($diler['shop']['id']))
		{
			$cur_shop = $diler['shop'];

			$PROP = [];
			
			if(!empty($cur_shop['phone1']))
				$PROP["PHONE"] = array($cur_shop['phone1'], $cur_shop['phone2'], $cur_shop['phone3']);
			else
				$PROP["PHONE"] = "";
			
			if(!empty($cur_shop['latitude']) && !empty($cur_shop['longitude']))
				$PROP["COORDS"] = $cur_shop['latitude'] . ',' . $cur_shop['longitude'];
			
			$PROP["ADDRESS"] = $cur_shop['address'];
			$PROP["EMAIL"] = array($cur_shop['email1'], $cur_shop['email2'], $cur_shop['email3']);
			$PROP["API_ID"] = $cur_shop['id'];
			
			$PROP["CITY"] = $arCities[$diler['city_id']];
			
			$PROP["SITE"] = array($diler['site1'], $diler['site2'], $diler['site3']);
			
			if(is_array($diler["equipment"]))
			{
				foreach($diler["equipment"] as $equip)
					$PROP["EQUIPMENT"][] = $arEquipments[$equip];
			}
			else
			{
				if(!empty($diler["equipment"]))
					$PROP["EQUIPMENT"][] = $arEquipments[$diler["equipment"]];
				//else
					//continue;
			}

			$arLoadShopArray = array(
				"IBLOCK_ID" => IBLOCK_ID_SHOPS,
				"PROPERTY_VALUES" => $PROP,
				"NAME" => $diler['name'],
				"ACTIVE" => "Y"
			);

			
			// если в базе магазина нет
			if(empty($arShops[$diler['shop']['id']]))
			{				
				if (!$SHOP_ID = $el->Add($arLoadShopArray))
					$errors[$shop['name']] = $el->LAST_ERROR;
				else
					$shop_list[] = $SHOP_ID;
			}
			else
			{
				$SHOP_ID_DB = $arShops[$cur_shop['id']];
				if (!$el->Update($SHOP_ID_DB, $arLoadShopArray))
					$errors[$shop['name']] = $el->LAST_ERROR;
				else
					$shop_list[] = $SHOP_ID_DB;
			}
			unset($arShopsNotAct[$cur_shop['id']]); // уберем из деактивации
			
		}
		elseif(!empty($diler['shop']))
		{

			foreach ($diler['shop'] as $shop) {
				
				$PROP = array();

				if(!empty($shop['phone1']))
					$PROP["PHONE"] = array($shop['phone1'], $shop['phone2'], $shop['phone3']);
				else
					$PROP["PHONE"] = "";
				
				if(!empty($shop['latitude']) && !empty($shop['longitude']))
					$PROP["COORDS"] = $shop['latitude'] . ',' . $shop['longitude'];
	
				$PROP["ADDRESS"] = $shop['address'];
				$PROP["EMAIL"] = array($shop['email1'], $shop['email2'], $shop['email3']);
				$PROP["API_ID"] = $shop['id'];
				
				$PROP["CITY"] = $arCities[$diler['city_id']];
				
				$PROP["SITE"] = array($diler['site1'], $diler['site2'], $diler['site3']);
				
				if(is_array($diler["equipment"]))
				{
					foreach($diler["equipment"] as $equip)
						$PROP["EQUIPMENT"][] = $arEquipments[$equip];
				}
				else
				{
					if(!empty($diler["equipment"]))
						$PROP["EQUIPMENT"][] = $arEquipments[$diler["equipment"]];
					//else
						//continue;
				}
				
				$dilerName = $diler['name'];
				
				if(!empty($shop['name']))
					$dilerName .= '<br>'.$shop['name'];

				$arLoadShopArray = array(
					"IBLOCK_ID" => IBLOCK_ID_SHOPS,
					"PROPERTY_VALUES" => $PROP,
					"NAME" => $dilerName,
					"ACTIVE" => "Y"
				);
				// если в базе магазина нет
				if(empty($arShops[$shop['id']]))
				{				
					if (!$SHOP_ID = $el->Add($arLoadShopArray))
						$errors[$shop['name']] = $el->LAST_ERROR;
					else
						$shop_list[] = $SHOP_ID;
				}
				else
				{
					$SHOP_ID_DB = $arShops[$shop['id']];
					if (!$el->Update($SHOP_ID_DB, $arLoadShopArray))
						$errors[$shop['name']] = $el->LAST_ERROR;
					else
						$shop_list[] = $SHOP_ID_DB;
				}
				unset($arShopsNotAct[$shop['id']]); // уберем из деактивации
			}
		}
		elseif (empty($diler['shop'])) // если не указан магазин
		{
			$PROP = [];
			
			$PROP["PHONE"] = "";
			
			$PROP["API_ID"] = $diler['id'];
			
			$PROP["CITY"] = $arCities[$diler['city_id']];
			$PROP["SITE"] = array($diler['site1'], $diler['site2'], $diler['site3']);
			
			if(is_array($diler["equipment"]))
			{
				foreach($diler["equipment"] as $equip)
					$PROP["EQUIPMENT"][] = $arEquipments[$equip];
			}
			else
			{
				if(!empty($diler["equipment"]))
					$PROP["EQUIPMENT"][] = $arEquipments[$diler["equipment"]];
				//else
					//continue;
			}

			$arLoadShopArray = array(
				"IBLOCK_ID" => IBLOCK_ID_SHOPS,
				"PROPERTY_VALUES" => $PROP,
				"NAME" => $diler['name'],
				"ACTIVE" => "Y"
			);

			
			// если в базе магазина нет
			if(empty($arShops[$diler['id']]))
			{				
				if (!$SHOP_ID = $el->Add($arLoadShopArray))
					$errors[$diler['name']] = $el->LAST_ERROR;
				else
					$shop_list[] = $SHOP_ID;
			}
			else
			{
				$SHOP_ID_DB = $arShops[$diler['id']];
				if (!$el->Update($SHOP_ID_DB, $arLoadShopArray))
					$errors[$diler['name']] = $el->LAST_ERROR;
				else
					$shop_list[] = $SHOP_ID_DB;
			}
			unset($arShopsNotAct[$diler['id']]); // уберем из деактивации
		}
		
		if(defined("IBLOCK_ID_DILLER"))
		{		
			
			if(!empty($arCities[$diler['city_id']]))
			{
				$PROP = [];
				$PROP["API_ID"] = $diler['id'];
				$PROP["CITY"] = $arCities[$diler['city_id']];
				$PROP["SITE"] = array($diler['site1'], $diler['site2'], $diler['site3']);
				$PROP["LOGOTYPE"] = '';//logo
				$PROP["PHONE"] = $diler['phone'];
				$PROP["SHOP"] = $shop_list;
				
				if(is_array($diler["equipment"]))
				{
					foreach($diler["equipment"] as $equip)
						$PROP["EQUIPMENT"][] = $arEquipments[$equip];
				}
				else
				{
					if(!empty($diler["equipment"]))
						$PROP["EQUIPMENT"][] = $arEquipments[$diler["equipment"]];
				}

				$arLoadDilerArray = array(
					"IBLOCK_ID" => IBLOCK_ID_DILLER,
					"PROPERTY_VALUES" => $PROP,
					"NAME" => $diler['name'],
					"ACTIVE" => "Y"
				);
				if(empty($arDilers[$diler['id']]))
				{
					if (!$DILER_ID = $el->Add($arLoadDilerArray)) {
						$errors[$diler['name']] = $el->LAST_ERROR;
					}
				} else {
					if (!$el->Update($arDilers[$diler['id']], $arLoadDilerArray)) {
						$errors[$diler['name']] = $el->LAST_ERROR;
					}
				}
				unset($arDilersNotAct[$diler['id']]); // уберем из деактивации
			}
		}
	}
	// пройдемся везде где надо убрать активность
	$arDeactive = array_merge($arCountriesNotAct, $arEquipmentsNotAct, $arShopsNotAct, $arDilersNotAct);
	foreach($arDeactive as $deactiveId)
	{
		$arLoadDeactive = array(
			"ACTIVE" => "N"
		);
		$el->Update($deactiveId, $arLoadDeactive);
	}
}
*/
echo "<pre>"; print_r($errors); echo "</pre>";