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


$arParams['IBLOCK_ID'] = '14';
$arParams['PATH_TO_AUTH'] = '/personal/auth/';


if (!$USER->IsAuthorized()) {
    LocalRedirect($arParams['PATH_TO_AUTH']);
    exit;
}

use Bitrix\Catalog\PriceTable,
    Bitrix\Main\Engine\CurrentUser,
    Bitrix\Iblock\Iblock;

//Loader::includeModule('catalog');

$iblockClass = Iblock::wakeUp($arParams['IBLOCK_ID'])->getEntityDataClass();

/*
 Постраничная навигация, ограничение 30 на страницу с шаблоном round
$nav = new \Bitrix\Main\UI\PageNavigation('round');
$nav->allowAllRecords(true) // Кнопка "Показать все"
    ->setPageSize(30)
    ->initFromUri();
*/

$resElements = $iblockClass::getList([
    'order' => [
        'TIMESTAMP_X' => 'DESC'
    ],
    'filter' => [
        'IBLOCK_ID' => $arParams['IBLOCK_ID'],
        'CREATED_BY' => CurrentUser::get()->getId(),
    ],
    'select' => [
        'ID',
        'NAME',
        'CREATED_BY',
        'ACTIVE',
        'DATE_CREATE',
        'ACTIVE_FROM',
        'ACTIVE_TO',
        'PREVIEW_PICTURE',
        'IBLOCK_SECTION_ID',
        'SHOW_COUNTER',
        'URL' => 'IBLOCK.DETAIL_PAGE_URL',
        // 'ADR_' => 'ATT_ADRESS'
    ],
    // 'offset' => $nav->getOffset(),
    // 'limit' => $nav->getLimit(),
    'cache' => [
        'ttl' => '36000'
    ]
])->fetchAll();

foreach ($resElements as $resElement) {
    // Дополучаем URL
    $resElement['URL'] = CIBlock::ReplaceDetailUrl(
        $resElement["URL"],
        $resElement,
        true,
        'E'
    );

    // Дополучаем картинку и ресайзим ее
    $resElement['PREVIEW_PICTURE'] = CFile::ResizeImageGet(
        $resElement['PREVIEW_PICTURE'],
        array("width" => 200, "height" => 200),
        BX_RESIZE_IMAGE_PROPORTIONAL_ALT,
        false
    );

    // Дату создания превращаем в красивый формат
    $resElement['DATE_CREATE'] = CIBlockFormatProperties::DateFormat(
        'j F Y',
        MakeTimeStamp(
            $resElement["DATE_CREATE"],
            CSite::GetDateFormat()
        )
    );

    // Дату активации превращаем в красивый формат
    $resElement['ACTIVE_FROM'] = CIBlockFormatProperties::DateFormat(
        'j F Y',
        MakeTimeStamp(
            $resElement["ACTIVE_FROM"],
            CSite::GetDateFormat()
        )
    );

    // Высчитываем сколько дней осталось до деактивации
    if (!empty($resElement['ACTIVE_TO'])) {
        $activeEndDay = date_diff(
            new DateTime(),
            new DateTime($resElement['ACTIVE_TO'])
        )->days;
        $resElement['DAYS_TO_DEACTIVATE'] = $activeEndDay;
    }

    // Используем DAYS_TO_DEACTIVATE как факт модерации для просроченных элементов
    if (
        ($resElement['ACTIVE'] === 'N') and
        (!empty($resElement['DAYS_TO_DEACTIVATE']))
    ) {
        $resElement['END_DAYS_LIMIT'] = 'Y';
    }

    // Получаем цену
    $prices = PriceTable::getList([
        'filter' => [
            '=PRODUCT_ID' => $resElement['ID']
        ],
        'select' => [
            'PRICE', 'CURRENCY'
        ]
    ])->fetch();
    $resElement['PRICE'] = CCurrencyLang::CurrencyFormat(
        $prices['PRICE'],
        $prices['CURRENCY']
    );


    // Набираем массив
    $arResult[$resElement['ID']] = $resElement;
}


// Активация объявления по запросу пользователя
$request = Bitrix\Main\Application::getInstance()->getContext()->getRequest();
$ElementId = $request->getPost('ELEMENT_ID');
if (
    (!empty($ElementId)) and
    ($arResult[$ElementId]['ACTIVE'] === 'N') and
    ($arResult[$ElementId]['END_DAYS_LIMIT'] === 'Y') and
    ($arResult[$ElementId]['CREATED_BY'] === CurrentUser::get()->getId())
) {
    $el = new CIBlockElement();
    $arFields = [
        'ACTIVE' => 'Y'
    ];
    if ($el->Update($ElementId, $arFields)) {
        LocalRedirect('/personal/my_bulletins/'); // todo в параметры компонента
    } else {
        // Ошибка если активация не удалась
    }
}

$this->includeComponentTemplate();
