Your IP : 3.145.60.79
<?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");
}
}