This repository has been archived on 2024-10-16. You can view files and clone it, but cannot push or open issues or pull requests.
skillparts/mirzaev/skillparts/system/views/search/index.php

253 lines
14 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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 ?>