253 lines
14 KiB
PHP
253 lines
14 KiB
PHP
<link href="/css/pages/search.css" rel="stylesheet">
|
||
|
||
<div id="page_search" class="container flex-grow-1 d-flex">
|
||
<?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) : ?>
|
||
|
||
<div class="row py-3 w-100">
|
||
<section class="col">
|
||
|
||
<?php
|
||
// Инициализация
|
||
$covr_not_found = true;
|
||
$i = 0;
|
||
$amount = count($response);
|
||
?>
|
||
|
||
<?php foreach ($response as $row) : ?>
|
||
|
||
<?php
|
||
// Инициализация
|
||
extract($row);
|
||
$name ?? $name = 'Без названия';
|
||
// $dscr ?? $dscr = 'Описание';
|
||
$catg ?? $catg = 'Категория';
|
||
$catn ?? $catn = 'Неизвестно';
|
||
|
||
// Инициализация обложки
|
||
$covr = null;
|
||
foreach ($imgs ?? [] as $img) {
|
||
// Перебор изображений для обложки
|
||
|
||
if ($img['covr'] ?? false) {
|
||
// Обложка найдена
|
||
|
||
$covr = $img['h150'];
|
||
|
||
break;
|
||
}
|
||
}
|
||
|
||
if (is_null($covr)) {
|
||
// Обложка не инициализирована
|
||
|
||
if (!$covr = $imgs[0]['h150'] ?? false) {
|
||
// Не удалось использовать первое изображение как обложку
|
||
|
||
// Запись обложки по умолчанию
|
||
$covr = '/img/covers/h150/product.png';
|
||
}
|
||
}
|
||
|
||
// Инициализация буфера с HTML поставок
|
||
$supplies_html = '';
|
||
|
||
// Инициализация блокировщика для пустого блока (на случай, если нет поставок, чтобы не было дубликатов вывода)
|
||
$empty_block = false;
|
||
|
||
// Инициализация счётчика поставок
|
||
$supplies_amount = count($row['supplies']);
|
||
|
||
// Инициализация указателя номера цикла
|
||
$supply_iterator = 1;
|
||
?>
|
||
|
||
<?php foreach ($row['supplies'] as $supply) : ?>
|
||
<?php
|
||
// Инициализация переменных
|
||
extract($supply);
|
||
|
||
// Инициализация цены
|
||
$price_raw = $cost;
|
||
$price = $price_raw . ' ' . $supply_edge_product[0]['onec']['Цены']['Цена']['Валюта'];
|
||
|
||
// Инициализация количества
|
||
$amount_raw = $amount = $supply['amnt'] ?? $supply_edge_product[0]['onec']['Количество'];
|
||
if (empty($amount_raw) || $amount_raw < 1) {
|
||
// Уже не используется
|
||
$amount = 'Под заказ';
|
||
} else {
|
||
$amount .= ' шт';
|
||
}
|
||
|
||
// Инициализация доставки
|
||
if (isset($delivery['error']) || $delivery === '?') {
|
||
// Не удалось рассчитать доставку
|
||
|
||
// Инициализация типа доставки
|
||
$delivery_type = $delivery['type'] ?? 'auto';
|
||
|
||
// Инициализация индикатора
|
||
$delivery_icon = '<i class="mr-1 fas fa-truck"></i>';
|
||
|
||
// Инициализация времени
|
||
$delivery = '?';
|
||
} else {
|
||
// Удалось рассчитать доставку
|
||
|
||
// Инициализация типа доставки
|
||
$delivery_type = $delivery['type'] ?? 'auto';
|
||
|
||
// Инициализация индикатора
|
||
$delivery_icon = match ($delivery_type) {
|
||
'avia' => '<i class="mr-1 fas fa-plane"></i>',
|
||
default => '<i class="mr-1 fas fa-truck"></i>'
|
||
};
|
||
|
||
// Инициализация даты отправки
|
||
try {
|
||
// Взять данные из "arrivalToOspSender" (Дата прибытия на терминал-отправитель)
|
||
|
||
$delivery_send_date = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspSender'])->getTimestamp();
|
||
} catch (Throwable $e) {
|
||
// Взять данные из "pickup" (Дата передачи груза на адресе отправителя)
|
||
|
||
$delivery_send_date = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['pickup'])->getTimestamp();
|
||
}
|
||
|
||
// Инициализация времени доставки
|
||
try {
|
||
// Доставка по воздуху (подразумевается), данные из "giveoutFromOspReceiver" (Дата и время, с которого груз готов к выдаче на терминале)
|
||
|
||
$delivery_converted = DateTime::createFromFormat('Y-m-d H:i:s', $delivery['orderDates']['giveoutFromOspReceiver'])->getTimestamp();
|
||
} catch (Throwable $e) {
|
||
// Автоматическая доставка (подразумевается), данные из "arrivalToOspReceiver" (Дата прибытия натерминал-получатель)
|
||
|
||
$delivery_converted = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspReceiver'])->getTimestamp();
|
||
}
|
||
$delivery = ceil(($delivery_converted - ($delivery_send_date ?? 0)) / 60 / 60 / 24) + 1;
|
||
}
|
||
|
||
// Инициализация индекса аккаунта
|
||
$index = $account['indx'] ?? 'Неизвестен';
|
||
|
||
// Инициализация модификатора класса
|
||
if ($supplies_amount > $supply_iterator) {
|
||
$supply_class_modifier = 'mb-1';
|
||
} else {
|
||
$supply_class_modifier = '';
|
||
}
|
||
|
||
if ($amount_raw < 1 || $price_raw < 1) {
|
||
// Нет в наличии или цена 0 рублей
|
||
|
||
if ($empty_block) continue;
|
||
|
||
$supplies_html .= <<<HTML
|
||
<div class="row $supply_class_modifier m-0 h-100 text-right">
|
||
<a class="col-auto ml-auto my-auto text-dark" href="/order/new/custom" role="button" onclick="return false;">
|
||
<small>
|
||
Заказать поиск у оператора
|
||
</small>
|
||
</a>
|
||
</div>
|
||
HTML;
|
||
|
||
// Запись блокировщика
|
||
$empty_block = true;
|
||
} else {
|
||
// Есть в наличии
|
||
|
||
$supplies_html .= <<<HTML
|
||
<div class="row $supply_class_modifier m-0 text-right">
|
||
<div class="col-5 mr-4"></div>
|
||
<small class="col-1 ml-2 my-auto pl-2 pr-0">$index</small>
|
||
<small class="col-1 my-auto pl-2 pr-0 text-center">$amount</small>
|
||
<small class="col-auto mr-2 my-auto pl-2 pr-0 text-left" title="Ориентировочно">$delivery_icon $delivery дн</small>
|
||
<b class="col-2 ml-auto my-auto">$price</b>
|
||
<a class="col-1 ml-0 py-2 text-dark d-flex button_white rounded" title="Добавить $catn в корзину" role="button" onclick="return cart_write('{$supply['_id']}', '$delivery_type');">
|
||
<i class="fas fa-cart-arrow-down pr-1 m-auto"></i>
|
||
</a>
|
||
</div>
|
||
HTML;
|
||
}
|
||
|
||
// Обновление счётчика
|
||
++$supply_iterator;
|
||
?>
|
||
|
||
<?php endforeach ?>
|
||
|
||
<div class="col pb-2">
|
||
<div class="row p-2 rounded">
|
||
<img class="ml-0 h-100 img-fluid rounded" src="<?= $covr ?>" />
|
||
<div class="col-3 ml-3 p-0 d-flex flex-column row_fixed_height">
|
||
<a class="my-auto text-dark" href="/product/<?= $catn ?>">
|
||
<h5 class="m-0"><?= $name ?></h5>
|
||
<h6 class="m-0"><small><?= $catn ?></small></h6>
|
||
</a>
|
||
</div>
|
||
<div class="col-1 ml-2 p-0 d-flex flex-column row_fixed_height">
|
||
<a class="my-auto text-dark" href="/product/<?= $catn ?>">
|
||
<small><?= $catg ?></small>
|
||
</a>
|
||
</div>
|
||
<div class="col ml-2 p-0 d-flex flex-column">
|
||
<?= $supplies_html ?>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<?php endforeach ?>
|
||
|
||
</section>
|
||
</div>
|
||
|
||
<?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 ?>
|