<?php

declare(strict_types=1);

use app\models\Product;
use app\models\ProductGroup;
use app\models\Search;

?>

<link href="/css/pages/search.css" rel="stylesheet">

<div id="page_search" class="px-0 py-4 container flex-grow-1 d-flex flex-column">
    <?php

    if (isset($timer) && $timer > 0) : ?>

        <div class="row py-3 w-100">
            <section class="col">
                <div class="d-flex flex-column mx-auto">
                    <p class="px-2 mb-1 text-center d-flex justify-content-center">Слишком частые запросы, повторите попытку через: <?= $timer ?? 5 ?> секунд</p>
                    <small class="mb-3 text-center d-flex justify-content-center">Подождите или нажмите на кнопку вручную</small>
                    <a class="btn text-white button_clean button_blue mx-auto" title="Перезагрузить страницу" role="button" onclick="window.location.reload();">Повторить</a>
                </div>
                <script type="text/javascript">
                    setTimeout('window.location.reload()', <?= $timer ?? 5 ?> + '000');
                </script>

            <?php else : ?>
                <?php if (isset($response) && is_array($response) && $response) : ?>
                    <?php
                    // Инициализация реестра пустышек (товаров без поставок или с ошибками)
                    $list = [];
                    ?>

                    <section class="mb-4 col-auto">
                        <h4 class="ml-4 mb-3">Товары по запросу: "<?= $query ?? 'ошибка чтения запроса' ?>"</h4>

                        <?php foreach ($response as $row) : ?>
                            <?php
                            // Инициализация данных товара
                            $covr = null;
                            $prod = $row['prod'] ?? 'Неизвестно';
                            $catn = $row['catn'] ?? 'Неизвестно';
                            $name = $row['name'] ?? 'Без названия';

                            // Генерация списка товаров
                            $supplies_html = Search::generate($row, $covr, $list);
                            ?>
                            <div class="col mb-2">
                                <div class="row p-2 rounded">
                                    <img class="ml-0 rounded" src="<?= $covr ?>" />
                                    <div class="col ml-3 p-0 d-flex flex-column row_fixed_height">
                                        <a class="my-auto text-dark" href="/product/<?= urlencode($prod) ?>/<?= urlencode($catn) ?>">
                                            <h5 class="m-0"><b><?= $prod ?></b> <?= $catn ?></h5>
                                            <h6 class="m-0"><small><?= $name ?></small></h6>
                                        </a>
                                    </div>
                                    <div class="col ml-3 p-0 d-flex flex-column">
                                        <?= $supplies_html ?>
                                    </div>
                                </div>
                            </div>
                        <?php endforeach ?>
                    </section>

                    <section class="col">
                        <?php
                        // Инициализация буфера аналогов
                        $analogs = [];

                        // Инициализация буфера записанных аналогов
                        $writed = [];


                        foreach ($list as $prod => $products) {
                            // Перебор производителей найденных товаров

                            // Инициализация производителя
                            $analogs[$prod] = $analogs[$prod] ?? [];

                            foreach ($products as $catn) {
                                // Перебор найденных товаров товаров производителя

                                // Чтение и запись аналогов
                                $analogs[$prod][$catn] = Search::content(products: ProductGroup::searchByProduct(Product::searchByCatnAndProd($catn, $prod))?->searchProducts() ?? []);

                                // Исключение из вывода в списке аналогов (проверка на дубликат)
                                $writed[$prod][$catn] = true;
                            }
                        }

                        // Инициализация блокировщика отрисовки заголовка
                        $block_title = false;
                        ?>

                        <?php foreach ($analogs as $prod => $catns) : ?>
                            <?php foreach ($catns as $catn => $products) : ?>
                                <?php foreach ($products as $product) : ?>
                                    <?php

                                    // Проверка на дубликат
                                    if (isset($writed[$prod]) && array_key_exists($product['catn'], $writed[$prod])) continue;

                                    // Инициализация данных товара
                                    $covr = null;
                                    $prod = $product['prod'] ?? 'Неизвестно';
                                    $catn = $product['catn'] ?? 'Неизвестно';
                                    $name = $product['name'] ?? 'Без названия';

                                    // Генерация списка товаров
                                    $supplies_html = Search::generate($product, $covr, analogs: true);

                                    // Не найдены поставки для аналогичного товара (не выводить в списке)
                                    if (empty($supplies_html)) continue;
                                    ?>

                                    <?php if (!$block_title && $block_title = true) : ?>
                                        <h4 class="ml-4 mb-3">Аналогичные товары</h4>
                                    <?php endif ?>

                                    <div class="col mb-2">
                                        <div class="row p-2 rounded">
                                            <img class="ml-0 rounded" src="<?= $covr ?>" />
                                            <div class="col ml-3 p-0 d-flex flex-column row_fixed_height">
                                                <a class="my-auto text-dark" href="/product/<?= urlencode($prod) ?>/<?= urlencode($catn) ?>">
                                                    <h5 class="m-0"><b><?= $prod ?></b> <?= $catn ?></h5>
                                                    <h6 class="m-0"><small><?= $name ?></small></h6>
                                                </a>
                                            </div>
                                            <div class="col ml-3 p-0 d-flex flex-column">
                                                <?= $supplies_html ?>
                                            </div>
                                        </div>
                                    </div>

                                    <?php
                                    // Запись в буфер записанных аналогов
                                    $writed[$product['catn']] = true;
                                    ?>
                                <?php endforeach ?>
                            <?php endforeach ?>
                        <?php endforeach ?>
                    </section>

                <?php else : ?>
                    <?php if ($advanced ?? false) : ?>
                        <h1 class="m-auto gilroy text-center"><b>Ничего не найдено</b></h1>
                    <?php else : ?>

                        <div class="row py-3 w-100">
                            <section class="col">
                                <div class="d-flex flex-column mx-auto">
                                    <p class="m-0 py-2 d-flex justify-content-center">Ничего не найдено</p>
                                </div>
                            </section>
                        </div>

                    <?php endif ?>
                <?php endif ?>

            </section>
        </div>

    <?php endif ?>

</div>

<script src="/js/cart.js" defer></script>
<script src="/js/product.js" defer></script>
<?php if (
    !yii::$app->user->isGuest
    && (yii::$app->user->identity->type === 'administrator'
        || yii::$app->user->identity->type === 'moderator')
) : ?>
    <script src="/js/product_panel.js" defer></script>
<?php endif ?>
