пошел нахуй

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2022-03-10 09:00:12 +10:00
parent a31214ad6a
commit 82d6747425
13 changed files with 154 additions and 87 deletions

View File

@ -97,7 +97,7 @@ $config = [
'<_key:[0-9]+>' => 'account/index', '<_key:[0-9]+>' => 'account/index',
'<_key:[0-9]+>/<target:[^/]+>/<action:(read|edit|delete|regenerate)>' => 'account/<action>', '<_key:[0-9]+>/<target:[^/]+>/<action:(read|edit|delete|regenerate)>' => 'account/<action>',
'<_key:[0-9]+>/files/<file:[^/]+>' => 'account/file', '<_key:[0-9]+>/files/<file:[^/]+>' => 'account/file',
'<_key:[0-9]+>/<action:(accept|decline)>' => 'account/<action>', '<_key:[0-9]+>/<action:(accept|decline|data)>' => 'account/<action>',
'product/<catn:[^/]+>' => 'product/index', 'product/<catn:[^/]+>' => 'product/index',
'product/<catn:[^/]+>/<action:(write|delete|connect|disconnect|status)>' => 'product/<action>', 'product/<catn:[^/]+>/<action:(write|delete|connect|disconnect|status)>' => 'product/<action>',
'<section:(product|cart)>/<catn:[^/]+>/<action:(read|write|edit|delete)>/<target:(title|catn|dscr|dmns|wght|image|cover|comm)>' => '<section>/<action>-<target>', '<section:(product|cart)>/<catn:[^/]+>/<action:(read|write|edit|delete)>/<target:(title|catn|dscr|dmns|wght|image|cover|comm)>' => '<section>/<action>-<target>',

View File

@ -23,7 +23,8 @@ class AccountController extends Controller
[ [
'allow' => true, 'allow' => true,
'actions' => [ 'actions' => [
'file' 'file',
'data'
] ]
], ],
[ [
@ -258,8 +259,9 @@ class AccountController extends Controller
/** /**
* Регенерация параметра * Регенерация параметра
* *
* @param int $_key * @param int $_key Идентификатор
* @param string $target * @param string $target
*
* @return void * @return void
*/ */
public function actionRegenerate(int $_key, string $target) public function actionRegenerate(int $_key, string $target)
@ -299,4 +301,55 @@ class AccountController extends Controller
return false; return false;
} }
/**
* Информация
*
* @param int $_key Идентификатор
*/
public function actionData(int $_key)
{
if (yii::$app->request->isPost) {
// AJAX-POST-запрос
// Инициализация аккаунта (тот кто выполняет запрос)
$account = account::initAccount();
// Поиск данных об аккаунта (запрашиваемом)
$data = account::initAccount($_key)->getAttributes();
if ($account->isAdmin() || $account->isModer()) {
// Авторизован как работник
} else if ((int) $account->_key === $_key) {
// Авторизован как владелец аккаунта
unset(
$data['vrfy'],
$data['geol'],
$data['auth'],
$data['jrnl'],
$data['acpt'],
$data['pswd']
);
} else {
// Не авторизован
// Очистка от защищенных свойств
$data = [
'_key' => $data['_key'],
'indx' => $data['indx'],
'agnt' => $data['agnt'],
'type' => $data['type']
];
}
// Настройка формата ответа
yii::$app->response->format = Response::FORMAT_JSON;
return [
'data' => $data,
'_csrf' => Yii::$app->request->getCsrfToken()
];
}
}
} }

View File

@ -588,23 +588,28 @@ class OrderController extends Controller
// Инициализация // Инициализация
$model = Order::searchByType(supplies: true); $model = Order::searchByType(supplies: true);
// Поиск ребра if (($account_edge_order = AccountEdgeOrder::searchByVertex(yii::$app->user->id, $model->readId(), 'current')[0]) ?? false) {
$account_edge_order = AccountEdgeOrder::searchByVertex(yii::$app->user->id, $model->readId(), 'current')[0]; // Найдено ребро: АККАУНТ -> ЗАКАЗ
if ($supplies = OrderEdgeSupply::searchByDirection($account_edge_order->to)) {
// Поставки найдены
// Добавить проверку на то, что товары активны if ($order_edge_supply = OrderEdgeSupply::searchByDirection($account_edge_order->_to, type: 'write', limit: 500)) {
// Найдены рёбра: ЗАКАЗ -> ПОСТАВКА
foreach ($order_edge_supply as $edge) {
// Перебор рёбер: ЗАКАЗ -> ПОСТАВКА
if ($product = Product::searchBySupplyId($edge->_to)) {
// Найден товар
// Проверка на активность товара
if ($product['stts'] === 'active');
else $edge->delete();
}
}
} }
var_dump($supplies); die; // Реиницилазация
$model = Order::searchByType(supplies: true);
if (count($account_edge_order) > 1) {
// Найден более чем 1 заказ
return null;
}
// Запись // Запись
$account_edge_order->type = 'requested'; $account_edge_order->type = 'requested';
@ -623,12 +628,16 @@ class OrderController extends Controller
$supplies[] = [ $supplies[] = [
'title' => $supply['supply']['catn'], 'title' => $supply['supply']['catn'],
'delivery' => 0,
'amount' => [ 'amount' => [
'value' => $supply['amount'] ?? 0, // 'value' => $supply['amount'][$supply['order_edge_supply'][]] ?? 0,
// 'value' => $supply['amount'] ?? 0,
'value' => 0,
'unit' => 'шт' 'unit' => 'шт'
], ],
'cost' => [ 'cost' => [
'value' => $supply['cost'] ?? 0, // 'value' => $supply['cost'] ?? 0,
'value' => 0,
'unit' => 'руб' 'unit' => 'руб'
], ],
'type' => 'supply' 'type' => 'supply'
@ -650,6 +659,7 @@ class OrderController extends Controller
// Отправка уведомлений модераторам // Отправка уведомлений модераторам
Notification::_write($this->renderPartial('/notification/system/orders/new', ['id' => $account_edge_order->_key]), true, '@auth', Notification::TYPE_MODERATOR_ORDER_NEW); Notification::_write($this->renderPartial('/notification/system/orders/new', ['id' => $account_edge_order->_key]), true, '@auth', Notification::TYPE_MODERATOR_ORDER_NEW);
} }
}
return $this->actionIndex(); return $this->actionIndex();
} }

View File

@ -877,6 +877,9 @@ class ProfileController extends Controller
return false; return false;
} }
/**
* Поиск заявок на регистрацию
*/
public function actionPanelSuppliersRequestsSearch() public function actionPanelSuppliersRequestsSearch()
{ {
if (Yii::$app->request->isPost) { if (Yii::$app->request->isPost) {

View File

@ -31,6 +31,7 @@ class SearchController extends Controller
if ($auth_only && yii::$app->user->isGuest) { if ($auth_only && yii::$app->user->isGuest) {
// Если активирован режим "Поиск только аутентифицированным" и запрос пришел не от аутентифицированного // Если активирован режим "Поиск только аутентифицированным" и запрос пришел не от аутентифицированного
// Запись кода ответа: 401 (необходима авторизация) // Запись кода ответа: 401 (необходима авторизация)
yii::$app->response->statusCode = 401; yii::$app->response->statusCode = 401;

View File

@ -549,7 +549,7 @@ class Order extends Document implements DocumentInterface
// Чтение стоимости // Чтение стоимости
$cost = Supply::readCostById($connection['supply']['_id']); $cost = Supply::readCostById($connection['supply']['_id']);
if (empty($cost) || $cost['ЦенаЗаЕдиницу'] < 1) { if (empty($cost) || $cost < 1) {
// Если стоимость не найдена или равна нулю (явная ошибка) // Если стоимость не найдена или равна нулю (явная ошибка)
// Удаление из базы данных // Удаление из базы данных
@ -633,7 +633,7 @@ class Order extends Document implements DocumentInterface
} }
// Запись цены (цена поставки + цена доставки + наша наценка) // Запись цены (цена поставки + цена доставки + наша наценка)
$connection['cost']['auto'] = ($cost['ЦенаЗаЕдиницу'] ?? $connection['supply']->onec['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($connection['delivery']['auto']['price']['all'] ?? $connection['delivery']['auto']['price']['one'] ?? 0) + ($settings['increase'] ?? 0) ?? 0; $connection['cost']['auto'] = ($cost ?? $connection['supply']->onec['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($connection['delivery']['auto']['price']['all'] ?? $connection['delivery']['auto']['price']['one'] ?? 0) + ($settings['increase'] ?? 0) ?? 0;
// } else { // } else {
// Доставка самолётом // Доставка самолётом
@ -696,11 +696,11 @@ class Order extends Document implements DocumentInterface
} }
// Запись цены (цена поставки + цена доставки + наша наценка) // Запись цены (цена поставки + цена доставки + наша наценка)
$connection['cost']['avia'] = ($cost['ЦенаЗаЕдиницу'] ?? $connection['supply']->onec['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($connection['delivery']['avia']['price']['all'] ?? $connection['delivery']['avia']['price']['one'] ?? 0) + ($settings['increase'] ?? 0) ?? 0; $connection['cost']['avia'] = ($cost ?? $connection['supply']->onec['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($connection['delivery']['avia']['price']['all'] ?? $connection['delivery']['avia']['price']['one'] ?? 0) + ($settings['increase'] ?? 0) ?? 0;
// } // }
// Запись валюты // Запись валюты
$connection['currency'] = $cost['Валюта']; $connection['currency'] = 'руб';
} }
return $connections; return $connections;

View File

@ -255,12 +255,12 @@ class Search extends Document
} catch (Exception $e) { } catch (Exception $e) {
$connection['delivery']['error'] = true; $connection['delivery']['error'] = true;
var_dump($e->getMessage()); // var_dump($e->getMessage());
var_dump($e->getTrace()); // var_dump($e->getTrace());
var_dump($e->getFile()); // var_dump($e->getFile());
var_dump(json_decode($e->getMessage(), true)['errors']); // var_dump(json_decode($e->getMessage(), true)['errors']);
die; // die;
} finally { } finally {
// echo $connection['delivery']['price']['all']; // echo $connection['delivery']['price']['all'];
// Инициализация цены (цена поставки + цена доставки + наша наценка) // Инициализация цены (цена поставки + цена доставки + наша наценка)

View File

@ -895,15 +895,11 @@ class Supply extends Product implements ProductInterface, OfferInterface
* @param string $_id Идентификатор поставки * @param string $_id Идентификатор поставки
* @param Product|null $product Товар для поиска по вершинам * @param Product|null $product Товар для поиска по вершинам
* *
* @return array|null Данные о ценах * @return int|null Стоимость (руб)
*/ */
public static function readCostById(string $_id, Product $product = null): ?array public static function readCostById(string $_id, Product $product = null): ?int
{ {
if (isset($product)) { return Supply::searchById($_id)->cost ?? null;
return SupplyEdgeProduct::searchByVertex($_id, $product->readId(), type: 'connect', limit: 1)['onec']['Цены']['Цена'];
}
return SupplyEdgeProduct::searchByDirection($_id, type: 'connect', limit: 1)['onec']['Цены']['Цена'];
} }
/** /**

View File

@ -25,7 +25,6 @@ use DateTime;
<span>Артикул</span> <span>Артикул</span>
</div> </div>
<div class="col-4"> <div class="col-4">
<span>Описание</span>
</div> </div>
<div class="col-1 ml-auto px-0 text-center"> <div class="col-1 ml-auto px-0 text-center">
<span>Количество</span> <span>Количество</span>
@ -104,7 +103,6 @@ use DateTime;
{$supply['catn']} {$supply['catn']}
</div> </div>
<div class="col-4 my-auto"> <div class="col-4 my-auto">
{$supply['dscr']}
</div> </div>
<div class="col-1 my-auto ml-auto"> <div class="col-1 my-auto ml-auto">
<input id="cart_list_amnt_{$supply['catn']}_auto" class="form-control text-center" type="text" value="{$amount['auto']}" onchange="return cart_list_amount_update('{$supply['catn']}', 'auto', this)" aria-invalid="false"> <input id="cart_list_amnt_{$supply['catn']}_auto" class="form-control text-center" type="text" value="{$amount['auto']}" onchange="return cart_list_amount_update('{$supply['catn']}', 'auto', this)" aria-invalid="false">

View File

@ -156,9 +156,7 @@ use app\models\Settings;
<td style="text-align: center; border: solid; border-left: thick;" colspan="1" valign="center"><?= $row++ ?></td> <td style="text-align: center; border: solid; border-left: thick;" colspan="1" valign="center"><?= $row++ ?></td>
<td style="text-align: left; border: solid;" colspan="6" valign="center"><?= $entry['title'] ?></td> <td style="text-align: left; border: solid;" colspan="6" valign="center"><?= $entry['title'] ?></td>
<?php var_dump($entry) ?> <td style="text-align: center; border: solid;" colspan="2" valign="center"><?= $entry['amount']['value'] ?></td>
<td style="text-align: center; border: solid;" colspan="2" valign="center"><?= $entry['amount']['auto']['value'] ?></td>
<td style="text-align: center; border: solid;" valign="center"><?= $entry['cost']['value'] ?></td> <td style="text-align: center; border: solid;" valign="center"><?= $entry['cost']['value'] ?></td>
<td style="text-align: center; border: solid;" valign="center"><?= $entry['cost']['unit'] ?></td> <td style="text-align: center; border: solid;" valign="center"><?= $entry['cost']['unit'] ?></td>
<td style="text-align: center; border: solid; border-right: thick;" colspan="2" valign="center"><?= $cost += $entry['cost']['value'] * $entry['amount']['value'] ?></td> <td style="text-align: center; border: solid; border-right: thick;" colspan="2" valign="center"><?= $cost += $entry['cost']['value'] * $entry['amount']['value'] ?></td>

View File

@ -216,7 +216,7 @@ $panel ?? $panel = 'profile_panel_supplies_input_import';
<!-- <div class="dropdown-divider mx-3 mb-3"></div> --> <!-- <div class="dropdown-divider mx-3 mb-3"></div> -->
<?php endif ?> <?php endif ?>
<?php endforeach ?> <?php endforeach ?>
<a class="mx-auto text-dark fas fa-plus" title="Добавить склад" type="button" onclick="return page_profile_warehouses_write();"></a> <a class="mx-auto text-dark fas fa-plus" type="button" onclick="return page_profile_warehouses_write();">Создать склад</a>
<?php endif ?> <?php endif ?>
<div class="dropdown-divider mt-4 mb-3"></div> <div class="dropdown-divider mt-4 mb-3"></div>
<section class="mx-3 px-2"> <section class="mx-3 px-2">

View File

@ -348,7 +348,7 @@ function cart_registration_entity_init(_key, wrap = 'cart_registration_entity_bo
wrap = document.getElementById(wrap); wrap = document.getElementById(wrap);
$.ajax({ $.ajax({
url: '/profile/panel/suppliers/requests/search', url: '/' + _key + '/data',
type: 'post', type: 'post',
dataType: 'json', dataType: 'json',
data: { data: {
@ -361,13 +361,13 @@ function cart_registration_entity_init(_key, wrap = 'cart_registration_entity_bo
if (data !== undefined) { if (data !== undefined) {
// Получены данные с сервера // Получены данные с сервера
if (data.suppliers !== undefined && data.suppliers !== null) { if (data.data !== undefined && data.data !== null) {
// Найдены данные поставщиков // Найдены данные поставщиков
// Удаление данных в оболочке // Удаление данных в оболочке
wrap.innerHTML = null; wrap.innerHTML = null;
for (let html of cart_registration_entity_generate(data.suppliers[0])) { for (let html of cart_registration_entity_generate(data.data)) {
// Перебор сгенерированных HTML-элементов // Перебор сгенерированных HTML-элементов
// Запись в документ // Запись в документ
@ -438,7 +438,7 @@ function cart_registration_entity_generate(account) {
input_boss.setAttribute('type', 'text'); input_boss.setAttribute('type', 'text');
input_boss.setAttribute('placeholder', 'Иванов Иван Иванович'); input_boss.setAttribute('placeholder', 'Иванов Иван Иванович');
input_boss.setAttribute('onchange', 'return cart_registration_block_edit(' + account._key + ', "boss", this.value);'); input_boss.setAttribute('onchange', 'return cart_registration_block_edit(' + account._key + ', "boss", this.value);');
input_boss.value = account.boss ?? '';; input_boss.value = account.boss ?? '';
// Инициализация ярлыка "SIMC" (телефон) // Инициализация ярлыка "SIMC" (телефон)
let label_simc = document.createElement('label'); let label_simc = document.createElement('label');
@ -451,7 +451,7 @@ function cart_registration_entity_generate(account) {
input_simc.setAttribute('class', 'form-control button_clean mb-3'); input_simc.setAttribute('class', 'form-control button_clean mb-3');
input_simc.setAttribute('type', 'number'); input_simc.setAttribute('type', 'number');
input_simc.setAttribute('onchange', 'return cart_registration_block_edit(' + account._key + ', "simc", this.value);'); input_simc.setAttribute('onchange', 'return cart_registration_block_edit(' + account._key + ', "simc", this.value);');
input_simc.value = ''; input_simc.value = account.simc ?? '';
// Инициализация ярлыка "MAIL" // Инициализация ярлыка "MAIL"
let label_mail = document.createElement('label'); let label_mail = document.createElement('label');
@ -607,13 +607,21 @@ function cart_registration_entity_generate(account) {
}; };
function cart_registration_choose(button = 'cart_registration_entity', account) { function cart_registration_choose(button = 'cart_registration_entity', account) {
// Инициализация элементов
let entity = document.getElementById('cart_registration_entity');
let entity_button = document.getElementById('cart_registration_entity_button');
let individual = document.getElementById('cart_registration_individual');
let individual_button = document.getElementById('cart_registration_individual_button');
// Деинициализация всех вкладок // Деинициализация всех вкладок
document.getElementById('cart_registration_entity').checked = entity.checked = false;
document.getElementById('cart_registration_individual').checked = false; individual.checked = false;
document.getElementById('cart_registration_entity').setAttribute('onclick', 'page_profile_panel_choose(\'cart_registration_entity\')'); // Запись скриптов
document.getElementById('cart_registration_individual').setAttribute('onclick', 'page_profile_panel_choose(\'cart_registration_individual\'); cart_registration_entity_init(' + account + ')'); entity_button.setAttribute('onclick', 'cart_registration_choose(\'cart_registration_entity\', ' + account + '); cart_registration_entity_init(' + account + ')');
individual_button.setAttribute('onclick', 'cart_registration_choose(\'cart_registration_individual\', ' + account + ')');
// Удаление активного статуса
document.querySelector('[for="cart_registration_entity"]').classList.remove('active'); document.querySelector('[for="cart_registration_entity"]').classList.remove('active');
document.querySelector('[for="cart_registration_individual"]').classList.remove('active'); document.querySelector('[for="cart_registration_individual"]').classList.remove('active');