<?php

namespace Mibazarow\Bxstore\Controller\Web;

use Bitrix\Main\Engine\Controller;
use Bitrix\Main\Engine\Response\Render\Component;
use Bitrix\Main\Engine\Response\Redirect;

/**
 * Контроллер персонального раздела.
 */
class PersonalController extends Controller
{
    protected function getDefaultPreFilters(): array
    {
        return [];
    }

    /**
     * Персональный раздел (профиль).
     * Маршрут: /personal/
     */
    public function indexAction(): Component|Redirect
    {
        global $APPLICATION, $USER;

        if (!$USER->IsAuthorized()) {
            return new Redirect('/personal/auth/');
        }

        $APPLICATION->SetTitle('Персональный раздел');

        return $this->renderComponent('bitrix:main.profile', 'profile', [
            'AJAX_MODE' => 'N',
            'AJAX_OPTION_JUMP' => 'N',
            'AJAX_OPTION_STYLE' => 'Y',
            'AJAX_OPTION_HISTORY' => 'N',
            'AJAX_OPTION_ADDITIONAL' => '',
            'SET_TITLE' => 'Y',
            'USER_PROPERTY' => '',
            'SEND_INFO' => 'N',
            'CHECK_RIGHTS' => 'N',
        ]);
    }

    /**
     * Добавление объявления.
     * Маршрут: /personal/add_bulletin/
     */
    public function addBulletinAction(): Component
    {
        global $APPLICATION;
        $APPLICATION->SetTitle('Добавление объявления');

        return $this->renderComponent('bazarow:bazarow.bulletin.formnew', '.default', [
            'AJAX_MODE' => 'N',
            'IBLOCK_ID' => '14',
            'IBLOCK_TYPE' => 'bulletin_board',
            'MAIL_FROM' => '',
            'MAIL_TO' => '',
            'OK_TEXT' => 'Ваше объявление добавлено',
            'SEF_MODE' => 'N',
            'USE_CAPTCHA' => 'N',
            'COMPONENT_TEMPLATE' => '.default',
            'LOCAL_REDIRECT' => '/personal/my_bulletins/',
            'SHOW_PROPERTIES_ID' => [],
        ]);
    }

    /**
     * Авторизация.
     * Маршрут: /personal/auth/
     */
    public function authAction(): Component|Redirect
    {
        global $APPLICATION, $USER;

        if ($USER->IsAuthorized()) {
            return new Redirect('/personal/');
        }

        $APPLICATION->SetTitle('Вход');

        return $this->renderComponent('bitrix:main.auth.form', 'flat', [
            'AUTH_FORGOT_PASSWORD_URL' => 'fogotpassword.php?forgot_password=yes',
            'AUTH_REGISTER_URL' => 'registration.php',
            'AUTH_SUCCESS_URL' => '/personal/',
        ]);
    }

    /**
     * Регистрация.
     * Маршрут: /personal/auth/registration.php
     */
    public function registrationAction(): Component
    {
        global $APPLICATION;
        $APPLICATION->SetTitle('Регистрация');

        return $this->renderComponent('bazarow:bazarow.registration', '.default', [
            'AJAX_MODE' => 'Y',
        ]);
    }

    /**
     * Восстановление пароля.
     * Маршрут: /personal/auth/fogotpassword.php
     */
    public function forgotPasswordAction(): Component
    {
        global $APPLICATION;
        $APPLICATION->SetPageProperty('keywords_inner', 'Восстановление пароля');
        $APPLICATION->SetPageProperty('title', 'Восстановление пароля');
        $APPLICATION->SetPageProperty('keywords', 'Восстановление пароля');
        $APPLICATION->SetPageProperty('description', 'Восстановление пароля');
        $APPLICATION->SetTitle('Восстановление пароля');

        return $this->renderComponent('bitrix:main.auth.forgotpasswd', '', [
            'AUTH_AUTH_URL' => 'index.php',
            'AUTH_REGISTER_URL' => 'registration.php',
        ]);
    }

    /**
     * Мои объявления.
     * Маршрут: /personal/my_bulletins/
     */
    public function myBulletinsAction(): Component
    {
        global $APPLICATION;
        $APPLICATION->SetTitle('Ваши объявления');

        return $this->renderComponent('bazarow:bazarow.bulletins.list', '', []);
    }

    /**
     * Мессенджер.
     * Маршрут: /personal/my_messenger/
     */
    public function myMessengerAction(): Component
    {
        global $APPLICATION;
        $APPLICATION->SetTitle('Мессенджер');

        return $this->renderComponent('bitrix:im.messenger', 'fullscreen', [
            'CONTEXT' => 'FULLSCREEN',
            'DESIGN' => 'DESKTOP',
            'DESKTOP' => false,
        ]);
    }

    /**
     * Избранное.
     * Маршрут: /personal/my_wishlist/
     */
    public function myWishlistAction(): Component
    {
        global $APPLICATION;
        $APPLICATION->SetTitle('Мое избранное');

        return $this->renderComponent('mibazarow:favorites.list', 'wish_list', [
            'CACHE_FILTER' => 'N',
            'CACHE_GROUPS' => 'Y',
            'CACHE_TIME' => '0',
            'CACHE_TYPE' => 'A',
            'COMPONENT_TEMPLATE' => '.default',
            'COMPOSITE_FRAME_MODE' => 'A',
            'COMPOSITE_FRAME_TYPE' => 'AUTO',
            'DATE_FORMAT' => 'j M Y',
            'DISPLAY_BOTTOM_PAGER' => 'N',
            'DISPLAY_TOP_PAGER' => 'N',
            'FAVORITES_COUNT' => '99999999999',
            'FILTER_NAME' => '',
            'NAV_TEMPLATE' => 'round',
            'SET_TITLE' => 'Y',
            'SORT_BY' => 'DATE_INSERT',
            'SORT_ORDER' => 'DESC',
            'IBLOCK_TYPE' => '1c_catalog',
            'IBLOCK_ID' => '6',
            'SHOW_DISCOUNT_PERCENT' => 'Y',
            'SHOW_OLD_PRICE' => 'Y',
            'ELEMENT_SORT_FIELD' => 'sort',
            'ELEMENT_SORT_ORDER' => 'asc',
            'ELEMENT_SORT_FIELD2' => 'id',
            'ELEMENT_SORT_ORDER2' => 'desc',
            'BASKET_URL' => '/personal/cart/',
            'PRICE_CODE' => ['Retail'],
            'PROPERTY_CODE' => ['', ''],
            'OFFERS_FIELD_CODE' => ['', ''],
            'OFFERS_PROPERTY_CODE' => ['', ''],
            'OFFERS_LIMIT' => '5',
            'ADD_PROPERTIES_TO_BASKET' => 'Y',
            'PRODUCT_PROPERTIES' => '',
            'OFFERS_CART_PROPERTIES' => '',
        ]);
    }
}
