Your IP : 3.145.60.79


Current Path : /home/bitrix/ext_www/dev.ballu.in.ua/local/components/ballu.b2c/project.map/
Upload File :
Current File : /home/bitrix/ext_www/dev.ballu.in.ua/local/components/ballu.b2c/project.map/class.php

<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
	die();

use Bitrix\Main\Context;

class ProjectMap extends CBitrixComponent
{
	protected $isAjax;
	protected $request;
	
	protected $sectionsVariants;
	
	public function __construct(CBitrixComponent $component = null)
	{
		parent::__construct($component);
		
		\Bitrix\Main\Loader::includeModule("rusklimat.b2c");
		\Bitrix\Main\Loader::includeModule("iblock");
		
		$this->arResult = [];
	}
	
	public function executeComponent()
	{
		try
		{
			$this->getPointData();
			
		}
		catch (Exception $e)
		{
			$errorStr = $e->getMessage();// . "\n" . $e->getTraceAsString();
			$this->arResult["ERROR"] = $errorStr;
		}
		
		$this->includeComponentTemplate();
		
		return true;
	}
	
	public function getPointData()
	{
		$dbRes = CIBlockElement::GetList(
			[],
			[
				"IBLOCK_ID" => \Rusklimat\B2c\Parts\Projects\Config::IBLOCK_ID,
			],
			false,
			false,
			[
				"ID",
				"NAME",
				"PROPERTY_COORD_X",
				"PROPERTY_COORD_Y",
				"PROPERTY_OBJECT_TYPE",
				"PROPERTY_EQUIPMENT_TYPE",
				"PROPERTY_DISTRICT",
				
				"PROPERTY_PERFORM_DATE",
				"PROPERTY_SUMM_SQUARE",
				"PROPERTY_ADDRESS",
			]
		);
		
		$arFilterVariants = [];
		
		$arFilterFields = [
			"OBJECT_TYPE" => "Тип объекта",
			"EQUIPMENT_TYPE" => "Тип оборудования",
			"DISTRICT" => "Федеральный округ",
		];
		
		while ($res = $dbRes->fetch())
		{
			/**
			 * для теста увеличим число точек
			 */
//			$id = $res["ID"];
//			for ($test = 0; $test <= 5; $test++)
//			{
//				$res["ID"] = $id . "_" . $test;
//
//				$tmpResult = [
//					"ID" => $res["ID"],
//					"COORD_X" => $res["PROPERTY_COORD_X_VALUE"] * (1 + rand(-50, 50) / 100),
//					"COORD_Y" => $res["PROPERTY_COORD_Y_VALUE"] * (1 + rand(-50, 50) / 100),
//
//					"NAME" => $res["NAME"],
//					"ADDRESS" => $res["PROPERTY_ADDRESS_VALUE"],
//					"SUMM_SQUARE" => number_format($res["PROPERTY_SUMM_SQUARE_VALUE"], 0, "", " "),
//					"PERFORM_DATE" => $this->getDate($res["PROPERTY_PERFORM_DATE_VALUE"]),
//				];
//
//				foreach ($arFilterFields as $filterCode => $filterName)
//				{
//					$val = $res["PROPERTY_" . $filterCode . "_VALUE"];
//
//					$tmpResult["FILTER"][$filterCode] = $val;
//					$arFilterVariants[$filterCode][$val] = $val;
//				}
//
//				$this->arResult["ITEMS"][$res["ID"]] = $tmpResult;
//			}
			
			$tmpResult = [
				"ID" => $res["ID"],
				"COORD_X" => $res["PROPERTY_COORD_X_VALUE"],
				"COORD_Y" => $res["PROPERTY_COORD_Y_VALUE"],
				"NAME" => $res["NAME"],
				"ADDRESS" => $res["PROPERTY_ADDRESS_VALUE"],
				"SUMM_SQUARE" => number_format($res["PROPERTY_SUMM_SQUARE_VALUE"], 0, "", " "),
				"PERFORM_DATE" => $this->getDate($res["PROPERTY_PERFORM_DATE_VALUE"]),
			];

			foreach ($arFilterFields as $filterCode => $filterName)
			{
				$val = $res["PROPERTY_" . $filterCode . "_VALUE"];

				$tmpResult["FILTER"][$filterCode] = $val;
				$arFilterVariants[$filterCode][$val] = $val;
			}

			$this->arResult["ITEMS"][$res["ID"]] = $tmpResult;
		}
		
		foreach ($arFilterFields as $filterCode => $filterName)
		{
			$arVariants = [];
			foreach (array_keys($arFilterVariants[$filterCode]) as $variantValue)
			{
				$arVariants[] = [
					"ID" => "",
					"VALUE" => $variantValue
				];
			}
			
			$this->arResult["FILTERS"][$filterCode] = [
				"name" => $filterName,
				"value" => "",
				"variant" => $arVariants,
				"code" => $filterCode,
				"placeholder" => "Выберите"
			];
		}
		
		return $this->arResult["ITEMS"];
	}
	
	public function getDate($dateString)
	{
		$date = \DateTime::createFromFormat("d.m.Y", $dateString);
		
		if (empty($date))
			return "";
		
		$arMonth = [
			"Январь",
			"Февраль",
			"Март",
			"Апрель",
			"Май",
			"Июнь",
			"Июль",
			"Август",
			"Сентябрь",
			"Октябрь",
			"Ноябрь",
			"Декабрь",
		];
		
		return $arMonth[IntVal($date->format("m")) - 1] . " " . $date->format("Y");
	}
}