<?php

declare(strict_types=1);

use yii;
use yii\bootstrap\ActiveForm;

use app\models\Account;
use app\models\Import;
use app\models\Settings;
use app\models\Warehouse;
use app\models\File;

use DateTime;
use DateTimeZone;

// Инициализация
$panel ?? $panel = 'profile_panel_supplies_input_import';

?>

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

<div id="page_profile" class="container mb-auto">
    <div class="row h-100 py-3">
        <nav class="col-3">
            <?= $sidebar ?? yii::$app->controller->renderPartial('/profile/sidebar') ?>
        </nav>
        <article class="col-9">
            <div class="h-100 p-4 rounded">
                <div id="profile_panel_supplies" class="profile_panel">
                    <div class="profile_panel_menu mb-3">
                        <label class="btn button_white mb-0 mr-2" for="profile_panel_supplies_input_settings">Настройки</label>
                        <label class="btn button_white mb-0 mr-2" for="profile_panel_supplies_input_import">Склады</label>
                    </div>
                    <div class="profile_panel_content">

                        <input type="radio" id="profile_panel_supplies_input_settings" name="main_panel" <?= $panel === 'profile_panel_supplies_input_settings' ? 'checked' : null ?> />
                        <div class="col">
                            <p>В разработке</p>
                        </div>

                        <input type="radio" id="profile_panel_supplies_input_import" name="main_panel" <?= $panel === 'profile_panel_supplies_input_import' ? 'checked' : null ?> />
                        <div class="col d-flex flex-column">
                            <h5>Управление складами</h5>
                            <div class="dropdown-divider mb-4"></div>

                            <?php if (false && Account::isMinimalAuthorized()) : ?>
                                <?php
                                $form = ActiveForm::begin([
                                    'id' => 'form_product_import_excel',
                                    'action' => false,
                                    'fieldConfig' => [
                                        'template' => '{label}{input}',
                                        'options' => ['class' => '']
                                    ],
                                    'options' => [
                                        'class' => 'px-3 mb-3 d-flex',
                                        'onsubmit' => 'return false;'
                                    ]
                                ]);
                                ?>

                                <?= $form->field($supply, 'account', ['options' => ['class' => "ml-auto mb-4 pr-0 col-4 d-flex"]])->input('text', ['placeholder' => yii::$app->user->identity->_key])->label(options: ['class' => 'mr-2 my-auto font-weight-bold']); ?>
                                <?= $form->field($supply, 'file_excel', ['enableLabel' => false, 'options' => ['class' => 'mr-auto mb-4 pr-0 col-5 d-flex flex-column']])->fileInput(['class' => 'my-auto', 'multiple' => true, 'onChange' => 'page_profile_supplies_import_excel(this.parentElement.parentElement, this.parentElement.parentElement.getElementsByTagName(\'input\')[0].value, \'profile_panel_supplies_input_import\')']) ?>

                                <?php ActiveForm::end(); ?>
                                <?php
                                // Инициализация счетчика инстанций импорта
                                $amount = 0;

                                // Чтение истанций импорта
                                $imports = Import::read(limit: 100, order: ['desc']);

                                // Инициализация часового пояса
                                preg_match_all('/UTC([\+\-0-9:]*)/', $account->zone ?? Settings::searchActive()['timezone_default'] ?? 'UTC+3', $timezone);
                                $timezone = $timezone[1][0];
                                ?>
                                <?php foreach ($imports as $import) : ?>
                                    <?php
                                    foreach ($import->jrnl as $jrnl) {
                                        // Перебор записей в журнале

                                        if ($jrnl['action'] === 'create') {
                                            // Найдена дата создания

                                            // Инициализация даты
                                            $create = (new DateTime())->setTimestamp($jrnl['date'])->setTimezone(new DateTimeZone($timezone))->format('H:i d.m.Y') ?? 'Неизвестно';

                                            break;
                                        }
                                    }

                                    foreach ($import->jrnl as $jrnl) {
                                        // Перебор записей в журнале

                                        if ($jrnl['action'] === 'connect_with_account') {
                                            // Найдена дата создания

                                            // Инициализация даты
                                            $account = $jrnl['data']['target'];

                                            break;
                                        }
                                    }

                                    // Инициализация файла
                                    $file = File::searchByImport($import);

                                    // Инициализация ссылки на скачивание
                                    preg_match_all('/\/files\/.*$/', $file->path ?? '', $matches);
                                    $download = $matches[0][0] ?? '';
                                    ?>

                                    <div class="mb-3 row">
                                        <div class="col-auto">
                                            <?= ++$amount ?>.
                                        </div>
                                        <div class="col">
                                            <?= (isset($file->stts) && $file->stts === 'loaded') ? $file->name ?? 'Без названия' : ($file->name ?? 'Без названия') . ' (в очереди на загрузку)' ?>
                                        </div>
                                        <div class="col-3 px-0 text-right">
                                            <?= $create ?? 'Неизвестно' ?>
                                        </div>
                                        <a class="pr-0 my-auto col-auto fas fa-user text-dark" href="<?= $date_connect_with_account ?? 'Неизвестно' ?>"></a>
                                        <a class="pr-0 my-auto col-auto fas fa-file-download text-dark" title="Скачать" href="<?= $download ?? '/#' ?>" aria-hidden="true" download></a>
                                        <a class="my-auto col-auto fas fa-trash-alt text-dark" title="Удалить" type="button" aria-hidden="true" onclick="return page_profile_imports_delete(<?= $import->_key ?>);"></a>
                                    </div>

                                    <?php if ($amount < count($imports)) : ?>
                                        <div class="dropdown-divider mb-3"></div>
                                    <?php endif ?>
                                <?php endforeach ?>
                            <?php else : ?>
                                <?php
                                // Инициализация складов
                                $warehouses = Warehouse::initWithWrite();

                                // Инициализация итератора
                                $amount_warehouses = 0;
                                ?>
                                <?php foreach ($warehouses as $warehouse) : ?>
                                    <section class="col mb-4">
                                        <h4 class="mb-3 d-flex">
                                            <span class="my-auto"><?= $warehouse->name ?? 'Без названия' ?></span>
                                            <?php $form = ActiveForm::begin([
                                                'id' => 'form_warehouse_settings',
                                                'action' => false,
                                                'fieldConfig' => [
                                                    'template' => '{label}{input}',
                                                ],
                                                'options' => [
                                                    'onsubmit' => 'return false;',
                                                    'class' => 'ml-auto px-0 col-5'
                                                ]
                                            ]);

                                            $list = array_unique($warehouse->genListTerminalsFrom());
                                            ?>

                                            <?= $form->field($warehouse, 'trmn', ['options' => ['class' => ""]])
                                                ->dropDownList($list, [
                                                    'onChange' => 'page_supplies_settings(this.parentElement.parentElement, ' . $warehouse->_key . ', \'profile_panel_supplies\')',
                                                    'disabled' => count($list) <= 1
                                                ])->label(false); ?>

                                            <?php ActiveForm::end(); ?>
                                            <small class="ml-4 my-auto h6"><a class="text-dark fas fa-pen" title="Переименовать" type="button" onclick="return page_profile_warehouses_rename(<?= $warehouse->_key ?>, prompt('Название склада', this.parentElement.parentElement.innerText));"></a></small>
                                            <small class="ml-3 my-auto h6"><a class="text-dark fas fa-solid <?= ($warehouse->open ?? false) ? 'fa-lock-open' : 'fa-lock' ?>" title="<?= ($warehouse->open ?? false) ? 'Закрыть' : 'Открыть' ?>" type="button" onclick="return <?= ($warehouse->open ?? false) ? 'page_profile_warehouses_close' : 'page_profile_warehouses_open' ?>(this, <?= $warehouse->_key ?>, '<?= $warehouse->name ?? 'Без названия' ?>');"></a></small>
                                            <small class="ml-3 my-auto h6"><a class="text-dark fas fa-trash-alt" title="Удалить" type="button" onclick="return page_profile_warehouses_delete(<?= $warehouse->_key ?>, '<?= $warehouse->name ?? 'Без названия' ?>');"></a></small>
                                        </h4>
                                        <?php
                                        // Инициализация номера инстанции импорта
                                        $amount_imports = 0;
                                        ?>

                                        <?php foreach (Import::searchByWarehouse($warehouse) as $import) : ?>
                                            <?php
                                            // Инициализация файла
                                            $file = File::searchByImport($import);

                                            // Инициализация ссылки на скачивание
                                            preg_match_all('/\/files\/.*$/', $file->path ?? '', $matches);
                                            $download = $matches[0][0] ?? '';
                                            ?>
                                            <div class="mx-2 mb-3 row">
                                                <div class="col-auto">
                                                    <?= ++$amount_imports ?>.
                                                </div>
                                                <div class="col">
                                                    <?= (isset($file->stts) && $file->stts === 'loaded') ? $file->name ?? 'Без названия' : ($file->name ?? 'Без названия') . ' (в очереди на загрузку)' ?>
                                                </div>
                                                <a class="pr-0 my-auto col-auto fas fa-file-download text-dark" title="Скачать" href="<?= $download ?? '/#' ?>" aria-hidden="true" download></a>
                                                <a class="my-auto col-auto fas fa-trash-alt text-dark" title="Удалить" type="button" aria-hidden="true" onclick="return page_profile_imports_delete(<?= $import->_key ?>);"></a>
                                            </div>
                                        <?php endforeach ?>

                                        <?php
                                        $form = ActiveForm::begin([
                                            'id' => 'form_warehouse_supplies',
                                            'action' => false,
                                            'fieldConfig' => [
                                                'template' => '{label}{input}',
                                                'options' => ['class' => '']
                                            ],
                                            'options' => [
                                                'class' => 'px-3',
                                                'onsubmit' => 'return false;'
                                            ]
                                        ]);
                                        ?>

                                        <div class="row">
                                            <?= $form->field($supply, 'file_excel', ['enableLabel' => false])->fileInput(['multiple' => true, 'onChange' => 'page_profile_supplies_import_excel(this.parentElement.parentElement.parentElement, ' . $warehouse->_key . ', undefined, \'profile_panel_supplies_input_import\')']) ?>
                                        </div>

                                        <?= $form->errorSummary($supply, ['header' => 'В документе были допущены ошибки:' /*, 'footer' => 'Исправьте их и попробуйте снова'*/]); ?>

                                        <?php ActiveForm::end(); ?>
                                    </section>

                                    <?php if ($amount_warehouses < count($warehouses)) : ?>
                                        <!-- <div class="dropdown-divider mx-3 mb-3"></div> -->
                                    <?php endif ?>
                                <?php endforeach ?>
                                <a class="mx-auto col-auto text-center text-dark fas fa-plus" type="button" onclick="return page_profile_warehouses_write();">
                                    <span class="row mt-1 font-weight-normal">Создать склад</span>
                                </a>
                            <?php endif ?>
                            <div class="dropdown-divider mt-4 mb-3"></div>
                            <section class="mx-3 px-2">
                                <!-- <b class="mb-2 row">Инструкция</b> -->
                                <small class="row">
                                    <dl class="mb-0">
                                        <dt>1. Заполните Excel-документ, где в первой строке записаны названия колонок</dt>
                                        <dd class="mx-4 mt-2 mb-1"><b>Артикул:</b> "артикул", "article", "catn"</dd>
                                        <dd class="mx-4 mb-1"><b>Аналоги:</b> "аналоги", "analogs", "ОЕМ", "oemn",</dd>
                                        <dd class="mx-4 mb-1"><b>Производитель:</b> "производитель", "production", "prod"</dd>
                                        <dd class="mx-4 mb-1"><b>Стоимость:</b> "стоимость", "цена", "cost", "price"</dd>
                                        <dd class="mx-4 mb-3"><b>Количество:</b> "количество", "amount", "amnt"</dd>

                                        <dt>2. Выберите или создайте склад и настройте его</dt>
                                        <dd class="mx-4 mt-2 mb-1"><b>1.</b> Установите город в котором находится склад</dd>
                                        <dd class="mx-4 mb-1"><b>2.</b> Нажмите на кнопку "Обзор..." (может называться по другому) и выбирете Excel-документ</dd>
                                        <dd class="mx-4 mb-1"><b>3.</b> Вам предложит подтвердить отправку на сервер</dd>
                                        <dd class="mx-4 mb-3"><b>4.</b> Если вы не уверены, что правильно заполнили документ, то отклоните загрузку и вам предложит отправить документ модератору. Мы сами настроим и загрузим ваш документ, а так же пришлем исправления, если выявим ошибки</dd>

                                        <dt>3. Проверьте что все товары загрузились успешно</dt>
                                        <dd class="mx-4 mt-2 mb-1"><b>1.</b> Присутствуют в поиске</dd>
                                        <dd class="mx-4 mb-1"><b>2.</b> Отображаются в списке поставок склада</dd>
                                        <dd class="mx-4 mb-3"><b>3.</b> В полученном уведомлении не написано об ошибках или непривязанных поставках. Если поставка не привязалась, то модератор автоматически получает запрос на решение проблемы (отсутствие товара в базе данных, либо неподходящие данные в документе). После обработки вам придёт уведомление и письмо на почту</dd>
                                    </dl>
                                    <div class="col px-0">
                                        <div class="row">
                                            <img class="my-3 mx-auto border border-dark" src="/img/supplies/import_manual.jpg" title="Инструкция по форматированию документа для загрузки на сервер" alt="Инструкция по форматированию документа для загрузки на сервер">
                                        </div>
                                        <div class="row">
                                            <a class="mx-auto" href="/files/system/supplies/sample.xlsx" download>Скачать файл с примером</a>
                                        </div>
                                    </div>
                                </small>
                            </section>
                        </div>
                    </div>
                </div>
        </article>
    </div>
</div>

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