<?php

declare(strict_types=1);

use yii;
use yii\bootstrap\ActiveForm;

use app\models\connection\Dellin;
use app\models\Supply;
use DateTime;

?>

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

<div id="page_cart" class="container mb-auto py-3">
    <article class="p-4 rounded">
        <h4 class="ml-4 mt-2 mb-4"><i class="fas fa-shopping-cart mr-2"></i>Корзина</h4>
        <div class="col mb-4 list rounded overflow-hidden">
            <div class="row py-2">
                <div class="pl-3 mr-1">
                    <input id="checkbox_cart_all" type="checkbox" onchange="return cart_list_checkbox(this);" />
                </div>
                <div class="col-2">
                    <span>Производитель</span>
                </div>
                <div class="col-2">
                    <span>Артикул</span>
                </div>
                <div class="col-2">
                    <span>Поставщик</span>
                </div>
                <div class="col-1 ml-auto  px-0 text-center">
                    <span>Количество</span>
                </div>
                <div class="col-2 text-right">
                    <span>Доставка</span>
                </div>
                <div class="col-2 mr-3 text-right">
                    <span>Стоимость</span>
                </div>
            </div>
            <?php
            if (!empty($data['supplies'])) {
                // Найдены цели для заказа

                // Инициализация списка поставок
                $targets = [];

                foreach ($data['supplies'] as $prod => $list) {
                    // Перебор поставщиков

                    foreach ($list as $catn => $deliveries) {
                        // Перебор поставок

                        foreach ($deliveries as $delivery => $supply) {
                            // Перебор типов доставки

                            // Инициализация комментария
                            $comment = $supply['edge']['comm'] ?? 'Комментарий к заказу';

                            // Инициализация доставки
                            if (empty($supply['delivery'])) {
                                // Не удалось рассчитать доставку

                                // Инициализация времени
                                $days = '?';
                            } else {
                                // Удалось рассчитать доставку

                                // Инициализация даты отправки
                                try {
                                    // Взять данные из "arrivalToOspSender" (Дата прибытия на терминал-отправитель)

                                    $delivery_send_date = DateTime::createFromFormat('Y-m-d', $supply['delivery']['orderDates']['arrivalToOspSender'])->getTimestamp();
                                } catch (Throwable $e) {
                                    // Взять данные из "pickup" (Дата передачи груза на адресе отправителя)

                                    $delivery_send_date = DateTime::createFromFormat('Y-m-d', $supply['delivery']['orderDates']['pickup'])->getTimestamp();
                                }

                                // Инициализация времени доставки
                                try {
                                    // Доставка по воздуху (подразумевается), данные из "giveoutFromOspReceiver" (Дата и время, с которого груз готов к выдаче на терминале)

                                    // Оставлено на всякий случай для дальнейших разбирательств

                                    $delivery_converted = DateTime::createFromFormat('Y-m-d H:i:s', $supply['delivery']['orderDates']['giveoutFromOspReceiver'])->getTimestamp();
                                } catch (Throwable $e) {
                                    // Инициализация даты отправки

                                    // Автоматическая доставка (подразумевается), данные из "arrivalToOspReceiver" (Дата прибытия натерминал-получатель)
                                    $delivery_converted = DateTime::createFromFormat('Y-m-d', $supply['delivery']['orderDates']['arrivalToOspReceiver'])->getTimestamp();
                                }
                                $days = ceil(($delivery_converted - ($delivery_send_date ?? 0)) / 60 / 60 / 24) + 1;
                            }

                            // Инициализация иконки
                            $icon = $delivery === 'avia' ? 'fa-plane' : 'fa-truck';

                            // Генерация HTML
                            echo <<<HTML
                                <div class="row py-2 cart_list_target">
                                    <div class="col">
                                        <div class="row">
                                            <div class="pl-3 my-auto mr-1">
                                                <input id="cart_list_checkbox_{$prod}_{$catn}_auto" type="checkbox" onchange="return cart_list_checkbox(this);"/>
                                            </div>
                                            <div class="col-2 my-auto">
                                                $prod
                                            </div>
                                            <div class="col-2 my-auto">
                                                $catn
                                            </div>
                                            <div class="col-2 my-auto">
                                                {$supply['account']['indx']}
                                            </div>
                                            <div class="col-1 my-auto ml-auto">
                                                <input id="cart_list_amnt_{$prod}_{$catn}_auto" class="form-control text-center" type="text" value="{$supply['amount']}" onchange="return cart_list_amount_update('$prod', '$catn', 'auto', this)" aria-invalid="false">
                                            </div>
                                            <div class="col-2 my-auto text-right">
                                                <p title="Ориентировочно"><i class="mr-1 fas $icon"></i> <b>~</b>$days дн</p>
                                            </div>
                                            <div class="col-2 my-auto mr-3 text-right">
                                                {$supply['supply']->cost} {$supply['currency']}
                                            </div>
                                        </div>
                                        <div class="dropdown-divider"></div>
                                        <div class="row mb-1">
                                            <div class="col-12">
                                                <p id="cart_list_comment_{$prod}_{$catn}_auto" class="mt-0 ml-0 text-break pointer-event" role="button" onclick="return cart_list_comment_edit('$prod', '$catn', 'auto', this);">$comment</p>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            HTML;
                        }
                    }
                }
            } else {
                echo <<<HTML
                    <div class="row py-2">
                        <div class="mx-auto py-2">
                            Корзина пуста
                        </div>
                    </div>
                HTML;
            }
            ?>
        </div>

        <div class="row mb-3 mx-0">
            <select id="cart_list_action" class="form-control mr-3 button_clean w-auto" name="CartListAction">
                <option value="none" hidden>Действие с выбранными</option>
                <option value="delete" onclick="return cart_list_delete();">Удалить</option>
            </select>
            <a class="mr-3 btn button_red button_clean" title="Очистить корзину" href="/cart" role="button" onclick="return cart_delete();">
                Очистить
            </a>
        </div>

        <div class="dropdown-divider mb-3"></div>

        <div class="p-3 mx-0 row">
            <div id="cart_registration_menu" class="mr-5 col px-0">
                <div class="row mb-4 mx-0">
                    <label id="cart_registration_individual_button" class="ml-auto btn button_white mb-0 mr-4" for="cart_registration_individual" onclick="cart_registration_choose('cart_registration_individual', <?= $account['_key'] ?>)">Физическое лицо</label>
                    <label id="cart_registration_entity_button" class="mr-auto btn button_white active mb-0" for="cart_registration_entity" onclick="cart_registration_choose('cart_registration_entity', <?= $account['_key'] ?>); cart_registration_entity_init(<?= $account['_key'] ?>)">Юридическое лицо</label>
                </div>
                <div class="cart_registration_content d-flex">
                    <input type="radio" id="cart_registration_individual" name="registration_panel" />
                    <div id="cart_registration_individual_body" class="col"></div>
                    <input type="radio" id="cart_registration_entity" name="registration_panel" checked />
                    <div id="cart_registration_entity_body" class="col"></div>
                </div>
            </div>

            <div class="col-4 px-0 d-flex flex-column">
                <div class="mb-3 mx-0 row mt-auto">
                    <?php $form = ActiveForm::begin([
                        'id' => 'form_profile_settings',
                        'action' => false,
                        'fieldConfig' => [
                            'template' => '{label}{input}',
                        ],
                        'options' => [
                            'onsubmit' => 'return false;',
                            'class' => 'ml-auto px-0 col'
                        ]
                    ]);

                    // Инициализация
                    $model_delivery ?? $model_delivery = yii::$app->user->identity;
                    $delivery_to_terminal_list ?? $delivery_to_terminal_list = ['Нет данных'];
                    ?>

                    <small class="mb-2"><b>Терминал для получения</b></small>

                    <?= $form->field($model_delivery, 'opts[delivery_to_terminal]', ['options' => ['class' => "mb-0"]])
                        ->dropDownList($delivery_to_terminal_list, [
                            'onChange' => 'page_profile_settings(this.parentElement.parentElement, undefined, \'\'); cart_cost_calculate();',
                            'disabled' => count($delivery_to_terminal_list) <= 1
                        ])->label(false); ?>

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

                <div class="mb-0 mx-0 row">
                    <div class="ml-auto px-0 col d-flex">
                        <b class="ml-auto my-auto mr-3">
                            <span id="cart_cost">0</span>
                            руб
                        </b>
                        <a class="col-5 btn button_clean button_blue" title="Оформить заказ" href="/orders" role="button" onclick="return cart_request();">Купить</a>
                    </div>
                </div>
            </div>
        </div>

    </article>
</div>

<script src="/js/textarea.js" defer></script>
<script src="/js/cart.js" defer></script>
<script src="/js/profile.js" defer></script>
<script>
    document.addEventListener('cart.loaded', function(e) {
        cart_cost_calculate();

        cart_registration_entity_init(<?= $account['_key'] ?>);

        cart_registration_choose('cart_registration_entity', <?= $account['_key'] ?>);
    });
</script>
