Принятие и отказ в регистрации
This commit is contained in:
parent
134ce8f162
commit
8c53872955
|
@ -94,6 +94,10 @@ $config = [
|
||||||
'class' => 'yii\rest\UrlRule',
|
'class' => 'yii\rest\UrlRule',
|
||||||
'controller' => 'main'
|
'controller' => 'main'
|
||||||
],
|
],
|
||||||
|
'<_key:[0-9]+>' => 'account/index',
|
||||||
|
'<_key:[0-9]+>/<target:[^/]+>/<action:(read|edit|delete|regenerate)>' => 'account/<action>',
|
||||||
|
'<_key:[0-9]+>/files/<file:[^/]+>' => 'account/file',
|
||||||
|
'<_key:[0-9]+>/<action:(accept|decline)>' => 'account/<action>',
|
||||||
'product/<catn:[^/]+>' => 'product/index',
|
'product/<catn:[^/]+>' => 'product/index',
|
||||||
'<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>',
|
||||||
'profile/geolocation/<action:(init|write)>' => 'profile/geolocation-<action>',
|
'profile/geolocation/<action:(init|write)>' => 'profile/geolocation-<action>',
|
||||||
|
|
|
@ -7,6 +7,7 @@ namespace app\controllers;
|
||||||
use yii;
|
use yii;
|
||||||
use yii\web\Controller;
|
use yii\web\Controller;
|
||||||
use yii\web\Response;
|
use yii\web\Response;
|
||||||
|
use yii\web\Cookie;
|
||||||
use yii\filters\AccessControl;
|
use yii\filters\AccessControl;
|
||||||
|
|
||||||
use app\models\Account;
|
use app\models\Account;
|
||||||
|
@ -19,14 +20,36 @@ class AccountController extends Controller
|
||||||
'access' => [
|
'access' => [
|
||||||
'class' => AccessControl::class,
|
'class' => AccessControl::class,
|
||||||
'rules' => [
|
'rules' => [
|
||||||
|
[
|
||||||
|
'allow' => true,
|
||||||
|
'actions' => [
|
||||||
|
'file'
|
||||||
|
]
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'allow' => true,
|
'allow' => true,
|
||||||
'roles' => ['@'],
|
'roles' => ['@'],
|
||||||
'actions' => [
|
'actions' => [
|
||||||
'index',
|
'index',
|
||||||
'edit',
|
'edit',
|
||||||
|
'regenerate'
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'allow' => true,
|
||||||
|
'actions' => ['accept', 'decline'],
|
||||||
|
'matchCallback' => function ($rule, $action): bool {
|
||||||
|
if (
|
||||||
|
!yii::$app->user->isGuest
|
||||||
|
&& (yii::$app->user->identity->type === 'administrator'
|
||||||
|
|| yii::$app->user->identity->type === 'moderator')
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'allow' => false,
|
'allow' => false,
|
||||||
'roles' => ['?'],
|
'roles' => ['?'],
|
||||||
|
@ -72,6 +95,130 @@ class AccountController extends Controller
|
||||||
return $this->renderPartial('/accounts/index');
|
return $this->renderPartial('/accounts/index');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Подтверждение
|
||||||
|
*
|
||||||
|
* @param int $_key Идентификатор аккаунта
|
||||||
|
*/
|
||||||
|
public function actionAccept(string $_key)
|
||||||
|
{
|
||||||
|
if (yii::$app->user->isGuest) {
|
||||||
|
// Аккаунт не аутентифицирован
|
||||||
|
} else {
|
||||||
|
if (yii::$app->request->isPost) {
|
||||||
|
// AJAX-POST-запрос
|
||||||
|
|
||||||
|
if (
|
||||||
|
yii::$app->user->identity->type === 'administrator'
|
||||||
|
|| yii::$app->user->identity->type === 'moderator'
|
||||||
|
) {
|
||||||
|
// Запрос произведен уполномоченным
|
||||||
|
|
||||||
|
if ($account = Account::searchById(Account::collectionName() . '/' . $_key)) {
|
||||||
|
// Аккаунт найден
|
||||||
|
|
||||||
|
$account->type = 'user';
|
||||||
|
|
||||||
|
if ($account->update() > 0) {
|
||||||
|
// Удалось перезаписать данные в хранилище
|
||||||
|
|
||||||
|
// Запись в журнал
|
||||||
|
$account->journal('accepted into suppliers');
|
||||||
|
|
||||||
|
// Отправка письма с подтверждением аккаунта
|
||||||
|
$account->sendMailVerify();
|
||||||
|
|
||||||
|
// Настройка формата ответа
|
||||||
|
yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Запись кода ответа
|
||||||
|
yii::$app->response->statusCode = 500;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Отказ
|
||||||
|
*
|
||||||
|
* @param int $_key Идентификатор аккаунта
|
||||||
|
*/
|
||||||
|
public function actionDecline(string $_key)
|
||||||
|
{
|
||||||
|
if (yii::$app->user->isGuest) {
|
||||||
|
// Аккаунт не аутентифицирован
|
||||||
|
} else {
|
||||||
|
if (yii::$app->request->isPost) {
|
||||||
|
// AJAX-POST-запрос
|
||||||
|
|
||||||
|
if (
|
||||||
|
yii::$app->user->identity->type === 'administrator'
|
||||||
|
|| yii::$app->user->identity->type === 'moderator'
|
||||||
|
) {
|
||||||
|
// Запрос произведен уполномоченным
|
||||||
|
|
||||||
|
if ($account = Account::searchById(Account::collectionName() . '/' . $_key)) {
|
||||||
|
// Аккаунт найден
|
||||||
|
|
||||||
|
// Отправка письма с отказом и причиной
|
||||||
|
$account->sendMailDecline(yii::$app->request->post('reason') ?? yii::$app->request->get('reason'));
|
||||||
|
|
||||||
|
// Настройка формата ответа
|
||||||
|
yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
|
// Удаление аккаунта
|
||||||
|
return $account->delete() > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Запись кода ответа
|
||||||
|
yii::$app->response->statusCode = 500;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Запрос файла
|
||||||
|
*
|
||||||
|
* @param int $_key Идентификатор аккаунта
|
||||||
|
* @param string $file Путь до файла от каталога аккаунта
|
||||||
|
*/
|
||||||
|
public function actionFile(string $_key, string $file)
|
||||||
|
{
|
||||||
|
// Инициализация файла
|
||||||
|
$file = YII_PATH_PUBLIC . "/../assets/accounts/$_key/files/$file";
|
||||||
|
|
||||||
|
if (file_exists($file)) {
|
||||||
|
// Удалось найти файл
|
||||||
|
|
||||||
|
return $this->response->sendFile($file);
|
||||||
|
} else {
|
||||||
|
// Не удалось найти файл
|
||||||
|
|
||||||
|
// Запись кода ответа
|
||||||
|
yii::$app->response->statusCode = 500;
|
||||||
|
|
||||||
|
// Перенаправление на страницу аккаунта
|
||||||
|
return yii::$app->response->redirect("/$_key");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Редактирование параметра
|
||||||
|
*
|
||||||
|
* @param int $_key
|
||||||
|
* @param string $target
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function actionEdit(int $_key, string $target)
|
public function actionEdit(int $_key, string $target)
|
||||||
{
|
{
|
||||||
if (yii::$app->user->isGuest) {
|
if (yii::$app->user->isGuest) {
|
||||||
|
@ -80,6 +227,13 @@ class AccountController extends Controller
|
||||||
if (yii::$app->request->isPost) {
|
if (yii::$app->request->isPost) {
|
||||||
// AJAX-POST-запрос
|
// AJAX-POST-запрос
|
||||||
|
|
||||||
|
if (
|
||||||
|
$_key === yii::$app->user->identity->_key ||
|
||||||
|
(yii::$app->user->identity->type === 'administrator'
|
||||||
|
|| yii::$app->user->identity->type === 'moderator')
|
||||||
|
) {
|
||||||
|
// Запрос произведен с изменяемого аккаунта, либо уполномоченным
|
||||||
|
|
||||||
if ($account = Account::searchById(Account::collectionName() . '/' . $_key)) {
|
if ($account = Account::searchById(Account::collectionName() . '/' . $_key)) {
|
||||||
// Аккаунт найден
|
// Аккаунт найден
|
||||||
|
|
||||||
|
@ -93,6 +247,52 @@ class AccountController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Запись кода ответа
|
||||||
|
yii::$app->response->statusCode = 500;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Регенерация параметра
|
||||||
|
*
|
||||||
|
* @param int $_key
|
||||||
|
* @param string $target
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function actionRegenerate(int $_key, string $target)
|
||||||
|
{
|
||||||
|
if (yii::$app->user->isGuest) {
|
||||||
|
// Аккаунт не аутентифицирован
|
||||||
|
} else {
|
||||||
|
if (yii::$app->request->isPost) {
|
||||||
|
// AJAX-POST-запрос
|
||||||
|
|
||||||
|
if ($account = Account::searchById(Account::collectionName() . '/' . $_key)) {
|
||||||
|
// Аккаунт найден
|
||||||
|
|
||||||
|
if (
|
||||||
|
$account->_key === yii::$app->user->identity->_key ||
|
||||||
|
(yii::$app->user->identity->type === 'administrator'
|
||||||
|
|| yii::$app->user->identity->type === 'moderator')
|
||||||
|
) {
|
||||||
|
// Запрос произведен с изменяемого аккаунта, либо уполномоченным
|
||||||
|
|
||||||
|
if ($target === 'indx') {
|
||||||
|
// Запрошена регенерация индекса
|
||||||
|
|
||||||
|
// Настройка формата ответа
|
||||||
|
yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
|
// Регенерация индекса
|
||||||
|
return Account::generateIndexes([$account], force: true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Запись кода ответа
|
// Запись кода ответа
|
||||||
yii::$app->response->statusCode = 500;
|
yii::$app->response->statusCode = 500;
|
||||||
|
|
|
@ -703,8 +703,6 @@ class ProfileController extends Controller
|
||||||
*/
|
*/
|
||||||
public static function syncGeolocationWithDellin(Account|int|null $account = null): bool
|
public static function syncGeolocationWithDellin(Account|int|null $account = null): bool
|
||||||
{
|
{
|
||||||
Account::initForController($account);
|
|
||||||
|
|
||||||
// Синхронизация с базой данных (таблица с ДеловыеЛинии)
|
// Синхронизация с базой данных (таблица с ДеловыеЛинии)
|
||||||
if (isset($account->geol['data']) && $dellin = Dellin::searchByCityKladr(str_pad($account->geol['data']['city_kladr_id'], 25, '0000000000000000000000'))) {
|
if (isset($account->geol['data']) && $dellin = Dellin::searchByCityKladr(str_pad($account->geol['data']['city_kladr_id'], 25, '0000000000000000000000'))) {
|
||||||
// Удалось найти город с терминалами ДеловыеЛинии
|
// Удалось найти город с терминалами ДеловыеЛинии
|
||||||
|
|
|
@ -34,13 +34,13 @@ class SuppliersController extends Controller
|
||||||
// Запись поставщика
|
// Запись поставщика
|
||||||
Account::writeSupplier($request['name'], $request['phon'], $request['mail'], $file = UploadedFile::getInstance(new Request($request), 'file'));
|
Account::writeSupplier($request['name'], $request['phon'], $request['mail'], $file = UploadedFile::getInstance(new Request($request), 'file'));
|
||||||
|
|
||||||
// yii::$app->mail_system->compose()
|
yii::$app->mail_system->compose()
|
||||||
// ->setFrom(yii::$app->params['mail']['system'])
|
->setFrom(yii::$app->params['mail']['system'])
|
||||||
// ->setTo(yii::$app->params['mail']['info'])
|
->setTo(yii::$app->params['mail']['info'])
|
||||||
// ->setSubject('Регистрация поставщика')
|
->setSubject('Регистрация поставщика')
|
||||||
// ->setHtmlBody($this->renderPartial('/mails/supplier', $request))
|
->setHtmlBody($this->renderPartial('/mails/supplier', $request))
|
||||||
// ->attach($file->tempName, ['fileName' => $file->name])
|
->attach($file->tempName, ['fileName' => $file->name])
|
||||||
// ->send();
|
->send();
|
||||||
|
|
||||||
return $this->renderPartial('/suppliers/requested');
|
return $this->renderPartial('/suppliers/requested');
|
||||||
}
|
}
|
||||||
|
|
|
@ -565,11 +565,11 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
* Генерация псевдоанонимных индексов
|
* Генерация псевдоанонимных индексов
|
||||||
*
|
*
|
||||||
* @param [int] $accounts Массив аккаунтов
|
* @param [int] $accounts Массив аккаунтов
|
||||||
* @param bool $init Параметр обозначающий изменение только для тех у кого ранее идентификатор задан не был (без перезаписи)
|
* @param bool $force Перезаписывать, если существует
|
||||||
*
|
*
|
||||||
* @return int Количество успешно обработанных аккаунтов
|
* @return int Количество успешно обработанных аккаунтов
|
||||||
*/
|
*/
|
||||||
public static function generateIndexes(array $accounts, bool $init = true): int
|
public static function generateIndexes(array $accounts, bool $force = false): int
|
||||||
{
|
{
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$amount = 0;
|
$amount = 0;
|
||||||
|
@ -597,14 +597,14 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
foreach ($accounts as $account) {
|
foreach ($accounts as $account) {
|
||||||
// Перебор запрошенных аккаунтов
|
// Перебор запрошенных аккаунтов
|
||||||
|
|
||||||
if (($init && empty($account->indx)) || !$init) {
|
if ($force || empty($account->indx)) {
|
||||||
// Запись только тех аккаунтов у кого не инициализирован индекс или если указано отсутствие проверки
|
// Запись только тех аккаунтов у кого не инициализирован индекс, либо если указана перезапись
|
||||||
|
|
||||||
// Повтор генерации
|
// Повтор генерации
|
||||||
regenerate_index:
|
regenerate_index:
|
||||||
|
|
||||||
// Генерация
|
// Генерация
|
||||||
$account->indx = $int_to_string(random_int(0, 29)) . $int_to_string(random_int(0, 29)) . $int_to_string(random_int(0, 29));
|
$account->indx = $int_to_string(random_int(0, 27)) . $int_to_string(random_int(0, 27)) . $int_to_string(random_int(0, 27));
|
||||||
|
|
||||||
if (in_array($account->indx, $registry)) {
|
if (in_array($account->indx, $registry)) {
|
||||||
// Сгенерированный индекс обнаружено в реестре запрещённых индексов
|
// Сгенерированный индекс обнаружено в реестре запрещённых индексов
|
||||||
|
@ -703,6 +703,19 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function sendMailDecline(string $reason = 'Проблема с данными'): bool
|
||||||
|
{
|
||||||
|
// Отправка письма
|
||||||
|
yii::$app->mail_system->compose()
|
||||||
|
->setFrom(yii::$app->params['mail']['system'])
|
||||||
|
->setTo($this->mail)
|
||||||
|
->setSubject('Отказано в регистрации')
|
||||||
|
->setHtmlBody(yii::$app->controller->renderPartial('/mails/suppliers/decline', ['reason' => $reason]))
|
||||||
|
->send();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Инициализация пароля
|
* Инициализация пароля
|
||||||
*/
|
*/
|
||||||
|
@ -714,10 +727,11 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
// Генерация пароля
|
// Генерация пароля
|
||||||
$this->pswd = self::passwordGenerate();
|
$this->pswd = self::passwordGenerate();
|
||||||
|
|
||||||
// Сохранение и возврат
|
// Возврат
|
||||||
return $this->update() > 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Возврат (подразумевается неудача)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -825,6 +839,7 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
// Настройка
|
// Настройка
|
||||||
$account->agnt = true;
|
$account->agnt = true;
|
||||||
$account->name = $name;
|
$account->name = $name;
|
||||||
|
$account->boss = $name;
|
||||||
$account->simc = $phone;
|
$account->simc = $phone;
|
||||||
$account->mail = $mail;
|
$account->mail = $mail;
|
||||||
$account->type = 'requested';
|
$account->type = 'requested';
|
||||||
|
@ -832,16 +847,16 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
// Генерация пароля
|
// Генерация пароля
|
||||||
$account->passwordInit();
|
$account->passwordInit();
|
||||||
|
|
||||||
// Инициализация индекса
|
|
||||||
Account::generateIndexes([$account]);
|
|
||||||
|
|
||||||
if ($account->save()) {
|
if ($account->save()) {
|
||||||
// Удалось сохранить аккаунт
|
// Удалось сохранить аккаунт
|
||||||
|
|
||||||
if (!file_exists($dir = YII_PATH_PUBLIC . '/../assets/accounts/' . $account->_key . '/documents')) {
|
// Инициализация индекса
|
||||||
|
Account::generateIndexes([$account]);
|
||||||
|
|
||||||
|
if (!file_exists($path = YII_PATH_PUBLIC . "/../assets/accounts/$account->_key/files")) {
|
||||||
// Директория для хранения документов не найдена
|
// Директория для хранения документов не найдена
|
||||||
|
|
||||||
if (!mkdir($dir, 0775, true)) {
|
if (!mkdir($path, 0775, true)) {
|
||||||
// Не удалось записать директорию
|
// Не удалось записать директорию
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -849,15 +864,22 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
// Перенос файла из временной директории
|
// Перенос файла из временной директории
|
||||||
copy($file->tempName, $file2 = $dir . '/' . $file->name);
|
copy($file->tempName, $path .= "/$file->name");
|
||||||
|
|
||||||
|
// Запись в журнал
|
||||||
$account->journal('request to become a supplier', [
|
$account->journal('request to become a supplier', [
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'phone' => $phone,
|
'phone' => $phone,
|
||||||
'mail' => $mail,
|
'mail' => $mail,
|
||||||
'file' => $file2
|
'file' => [
|
||||||
|
'path' => $path,
|
||||||
|
'uri' => "/$account->_key/files/$file->name"
|
||||||
|
]
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// Отправка уведомлений
|
||||||
|
Notification::_write(yii::$app->controller->renderPartial('/notification/system/suppliers/request', ['_key' => $account->_key]), html: true, account: '@authorized');
|
||||||
|
|
||||||
return $account;
|
return $account;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -871,7 +893,7 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
*/
|
*/
|
||||||
public static function searchSuppliersRequests(): array
|
public static function searchSuppliersRequests(): array
|
||||||
{
|
{
|
||||||
return self::find()->where(['agnt' => true, 'type' => 'requested'])->all();
|
return self::find()->where(['agnt' => true, 'type' => 'requested'])->orderBy(['DESC'])->all();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -156,7 +156,7 @@ class Notification extends Document
|
||||||
{
|
{
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$model = new self;
|
$model = new self;
|
||||||
$account or $account = yii::$app->user->identity->_key ?? throw new Exception('Не удалось инициализировать получателя');
|
$account ?? $account = yii::$app->user->identity->_key ?? throw new Exception('Не удалось инициализировать получателя');
|
||||||
|
|
||||||
if ((bool) (int) $html) {
|
if ((bool) (int) $html) {
|
||||||
// Получен текст в формете HTML-кода
|
// Получен текст в формете HTML-кода
|
||||||
|
@ -186,16 +186,16 @@ class Notification extends Document
|
||||||
* Поиск получателя
|
* Поиск получателя
|
||||||
*
|
*
|
||||||
* @param self $model Уведомление
|
* @param self $model Уведомление
|
||||||
* @param string $text Необработанный текст
|
* @param string $targets Необработанный текст с получателями
|
||||||
* @param string $type Тип уведомления
|
* @param string $type Тип уведомления
|
||||||
*/
|
*/
|
||||||
protected static function searchReceiverAndConnect(self $model, string $text, string $type = self::TYPE_NOTICE): AccountEdgeNotification|array|null
|
protected static function searchReceiverAndConnect(self $model, string $targets, string $type = self::TYPE_NOTICE): AccountEdgeNotification|array|null
|
||||||
{
|
{
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$return = [];
|
$return = [];
|
||||||
|
|
||||||
// Конвертация
|
// Конвертация
|
||||||
$accounts = array_map('trim', explode(self::$delimiter, $text));
|
$accounts = array_map('trim', explode(self::$delimiter, $targets));
|
||||||
|
|
||||||
foreach ($accounts as $account) {
|
foreach ($accounts as $account) {
|
||||||
if (in_array('@all', $accounts, true)) {
|
if (in_array('@all', $accounts, true)) {
|
||||||
|
@ -218,7 +218,7 @@ class Notification extends Document
|
||||||
|| in_array('@auth', $accounts, true)
|
|| in_array('@auth', $accounts, true)
|
||||||
|| in_array('@autheds', $accounts, true)
|
|| in_array('@autheds', $accounts, true)
|
||||||
) {
|
) {
|
||||||
// Всем авторизованным
|
// Всем авторизованным (админам и модераторам)
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$return = [];
|
$return = [];
|
||||||
|
|
|
@ -327,46 +327,23 @@ class Product extends Document
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$data = [];
|
$data = [];
|
||||||
$amount = 0;
|
$amount = 0;
|
||||||
|
$account = Account::initAccount($account);
|
||||||
if (is_null($account)) {
|
|
||||||
// Данные аккаунта не переданы
|
|
||||||
|
|
||||||
if (yii::$app->user->isGuest) {
|
|
||||||
// Аккаунт не аутентифицирован
|
|
||||||
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
// Аккаунт аутентифицирован
|
|
||||||
|
|
||||||
// Инициализация
|
|
||||||
$account = yii::$app->user->identity;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (is_int($account)) {
|
|
||||||
// Передан идентификатор (_key) аккаунта (подразумевается)
|
|
||||||
|
|
||||||
// Инициализация (поиск в базе данных)
|
|
||||||
if (!$account = Account::searchById(Account::collectionName() . "/$account")) {
|
|
||||||
// Не удалось инициализировать аккаунт
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if ($this->validate()) {
|
if ($this->validate()) {
|
||||||
foreach ($this->file_excel as $file) {
|
foreach ($this->file_excel as $file) {
|
||||||
// Перебор файлов
|
// Перебор файлов
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$dir = YII_PATH_PUBLIC . '../assets/import/' . (new DateTime('now', new DateTimeZone($account->zone ?? Settings::search()['timezone_default'] ?? 'UTC+3'))) . '/excel/' . (yii::$app->user->identity->_key ?? 'system') . '/' . time() . '/';
|
preg_match_all('/UTC([\+\-0-9:]*)/', $account->zone ?? Settings::search()['timezone_default'] ?? 'UTC+3', $timezone);
|
||||||
|
$timezone = $timezone[1][0];
|
||||||
|
$path = YII_PATH_PUBLIC . "/../assets/accounts/$account->_key/files/" . (new DateTime('now', new DateTimeZone($timezone)))->getTimestamp();
|
||||||
|
|
||||||
// Сохранение на диск
|
// Сохранение на диск
|
||||||
if (!file_exists($dir)) {
|
if (!file_exists($path))
|
||||||
mkdir($dir, 0775, true);
|
if (!mkdir($path, 0775, true))
|
||||||
}
|
throw new Exception('Не удалось создать директорию', 500);
|
||||||
$file->saveAs($path = $dir . $file->baseName . '.' . $file->extension);
|
|
||||||
|
$file->saveAs($path = $path . "/$file->baseName.$file->extension");
|
||||||
|
|
||||||
$data[] = Excel::import($path, [
|
$data[] = Excel::import($path, [
|
||||||
'setFirstRecordAsKeys' => true,
|
'setFirstRecordAsKeys' => true,
|
||||||
|
@ -407,17 +384,18 @@ class Product extends Document
|
||||||
// (new $group())->writeMember($product, $this->group);
|
// (new $group())->writeMember($product, $this->group);
|
||||||
} else {
|
} else {
|
||||||
// Проверка не пройдена
|
// Проверка не пройдена
|
||||||
foreach ($product->errors as $attribute => $error) {
|
|
||||||
$this->addError($attribute, $error);
|
// Добавление ошибок
|
||||||
}
|
foreach ($product->errors as $attribute => $error) $this->addError($attribute, $error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Деинициализация
|
// Деинициализация
|
||||||
$this->file_excel = '';
|
$this->file_excel = null;
|
||||||
|
|
||||||
|
// Макрос действий после импорта
|
||||||
static::afterImportExcel($amount);
|
static::afterImportExcel($amount);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<div style="padding: 0 14%;">
|
||||||
|
<div style="background: #fff;">
|
||||||
|
<a title="SkillParts" href="https://skillparts.ru">
|
||||||
|
<img style="width: 150px;" src="https://skillparts.ru/img/logos/skillparts.png" alt="SkillParts">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div style="background: #f0eefb; padding: 40px; margin: 30px 0;">
|
||||||
|
<h3 style="text-align: center; margin-bottom: 30px;"><b>Отказано в регистрации</b></h3>
|
||||||
|
<p style="margin: 0 40px; margin-bottom: 8px;"><b>Причина: </b><?= $reason ?? 'Ошибка' ?></p>
|
||||||
|
<a style="display: block; text-align: center;" href="https://skillparts.loc/suppliers/request">Повторная заявка</a>
|
||||||
|
</div>
|
||||||
|
<div style="background: #fff;">
|
||||||
|
<small>Вы получили это сообщение потому, что на ваш почтовый адрес была совершена регистрация</small>
|
||||||
|
</br>
|
||||||
|
<small>Если это были не вы, проверьте безопасность ваших аккаунтов и свяжитесь с администрацией</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -12,6 +12,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div style="background: #fff;">
|
<div style="background: #fff;">
|
||||||
<small>Вы получили это сообщение потому, что на ваш почтовый адрес была совершена регистрация</small>
|
<small>Вы получили это сообщение потому, что на ваш почтовый адрес была совершена регистрация</small>
|
||||||
|
</br>
|
||||||
<small>Если это были не вы, проверьте безопасность ваших аккаунтов и свяжитесь с администрацией</small>
|
<small>Если это были не вы, проверьте безопасность ваших аккаунтов и свяжитесь с администрацией</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -23,7 +23,10 @@ foreach ($notification->jrnl as $jrnl) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$title = <<<HTML
|
$title = <<<HTML
|
||||||
<b class="row mb-1 px-3"><small>$type<span class="ml-auto">$date</span></small></b>
|
<small class="mb-1 w-100 d-flex">
|
||||||
|
<b class="mr-auto">$type</b>
|
||||||
|
<b class="ml-auto">$date</b>
|
||||||
|
</small>
|
||||||
HTML;
|
HTML;
|
||||||
|
|
||||||
echo <<<HTML
|
echo <<<HTML
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
<a class="text-dark" href="/profile/panel#<?= $_key ?>">Заявка на регистрацию поставщика: <?= $_key ?></a>
|
|
@ -107,7 +107,8 @@ main {
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button_blue_simple:active {
|
.button_blue_simple:active,
|
||||||
|
.button_blue_simple:focus {
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
background-color: #391e97;
|
background-color: #391e97;
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
|
@ -125,7 +126,8 @@ main {
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button_blue:active {
|
.button_blue:active,
|
||||||
|
.button_blue:focus {
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
background-color: #391e97;
|
background-color: #391e97;
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
|
@ -143,7 +145,8 @@ main {
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button_red:active {
|
.button_red:active,
|
||||||
|
.button_red:focus {
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
background-color: #971e1e;
|
background-color: #971e1e;
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
|
@ -161,7 +164,8 @@ main {
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button_red_softer:active {
|
.button_red_softer:active,
|
||||||
|
.button_red_softer:focus {
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
background-color: #b82d2d;
|
background-color: #b82d2d;
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
|
@ -176,12 +180,14 @@ main {
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button_white:active {
|
.button_white:active,
|
||||||
|
.button_white:focus {
|
||||||
background-color: #cfd3dd;
|
background-color: #cfd3dd;
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button_white_hover {
|
.button_white_hover {
|
||||||
|
/* Что я натворил? */
|
||||||
background-color: #eaebee !important;
|
background-color: #eaebee !important;
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
}
|
}
|
||||||
|
@ -195,7 +201,8 @@ main {
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button_grey:active {
|
.button_grey:active,
|
||||||
|
.button_grey:focus {
|
||||||
background-color: #8c94a8;
|
background-color: #8c94a8;
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,7 +137,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация контейнера
|
// Инициализация контейнера
|
||||||
let container = document.createElement('div');
|
let container = document.createElement('div');
|
||||||
container.setAttribute('id', 'profile_panel_input_suppliers_requests_block_' + account._key);
|
container.setAttribute('id', account._key);
|
||||||
container.setAttribute('class', i < suppliers.length ? 'mb-3 px-3 py-1 row panel_supplier_request' : 'px-3 py-1 row panel_supplier_request');
|
container.setAttribute('class', i < suppliers.length ? 'mb-3 px-3 py-1 row panel_supplier_request' : 'px-3 py-1 row panel_supplier_request');
|
||||||
|
|
||||||
// Инициализация первой строки
|
// Инициализация первой строки
|
||||||
|
@ -146,7 +146,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация колонки с метаданными аккаунта
|
// Инициализация колонки с метаданными аккаунта
|
||||||
let block_metadata = document.createElement('div');
|
let block_metadata = document.createElement('div');
|
||||||
block_metadata.setAttribute('id', 'profile_panel_input_suppliers_requests_block_metadata_' + account._key);
|
block_metadata.setAttribute('id', 'metadata_' + account._key);
|
||||||
block_metadata.setAttribute('class', 'col-4 pr-0 d-flex flex-column');
|
block_metadata.setAttribute('class', 'col-4 pr-0 d-flex flex-column');
|
||||||
|
|
||||||
// Инициализация оболочки идентификатора аккаунта
|
// Инициализация оболочки идентификатора аккаунта
|
||||||
|
@ -200,6 +200,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
button_accept.setAttribute('class', 'mb-2 btn form-control button_blue');
|
button_accept.setAttribute('class', 'mb-2 btn form-control button_blue');
|
||||||
button_accept.setAttribute('type', 'button');
|
button_accept.setAttribute('type', 'button');
|
||||||
button_accept.setAttribute('role', 'button');
|
button_accept.setAttribute('role', 'button');
|
||||||
|
button_accept.setAttribute('onclick', 'return profile_panel_input_suppliers_requests_block_accept(' + account._key + ');');
|
||||||
button_accept.innerText = 'Подтвердить';
|
button_accept.innerText = 'Подтвердить';
|
||||||
|
|
||||||
// Инициализация кнопки отклонения
|
// Инициализация кнопки отклонения
|
||||||
|
@ -207,11 +208,12 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
button_decline.setAttribute('class', 'btn form-control button_red_softer');
|
button_decline.setAttribute('class', 'btn form-control button_red_softer');
|
||||||
button_decline.setAttribute('type', 'button');
|
button_decline.setAttribute('type', 'button');
|
||||||
button_decline.setAttribute('role', 'button');
|
button_decline.setAttribute('role', 'button');
|
||||||
|
button_decline.setAttribute('onclick', 'return profile_panel_input_suppliers_requests_block_decline(' + account._key + ');');
|
||||||
button_decline.innerText = 'Отклонить';
|
button_decline.innerText = 'Отклонить';
|
||||||
|
|
||||||
// Инициализация колонки с основными данными аккаунта
|
// Инициализация колонки с основными данными аккаунта
|
||||||
let block_info = document.createElement('div');
|
let block_info = document.createElement('div');
|
||||||
block_info.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_' + account._key);
|
block_info.setAttribute('id', '' + account._key);
|
||||||
block_info.setAttribute('class', 'col-4 pl-0 d-flex flex-column');
|
block_info.setAttribute('class', 'col-4 pl-0 d-flex flex-column');
|
||||||
|
|
||||||
// Инициализация ярлыка "NAME"
|
// Инициализация ярлыка "NAME"
|
||||||
|
@ -221,7 +223,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "NAME"
|
// Инициализация поля "NAME"
|
||||||
let input_name = document.createElement('input');
|
let input_name = document.createElement('input');
|
||||||
input_name.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_name_' + account._key);
|
input_name.setAttribute('id', 'name_' + account._key);
|
||||||
input_name.setAttribute('class', 'form-control button_clean mb-3');
|
input_name.setAttribute('class', 'form-control button_clean mb-3');
|
||||||
input_name.setAttribute('type', 'text');
|
input_name.setAttribute('type', 'text');
|
||||||
input_name.setAttribute('placeholder', 'Иванов Иван Иванович');
|
input_name.setAttribute('placeholder', 'Иванов Иван Иванович');
|
||||||
|
@ -235,7 +237,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "BOSS"
|
// Инициализация поля "BOSS"
|
||||||
let input_boss = document.createElement('input');
|
let input_boss = document.createElement('input');
|
||||||
input_boss.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_boss_' + account._key);
|
input_boss.setAttribute('id', 'boss_' + account._key);
|
||||||
input_boss.setAttribute('class', 'form-control button_clean mb-3');
|
input_boss.setAttribute('class', 'form-control button_clean mb-3');
|
||||||
input_boss.setAttribute('type', 'text');
|
input_boss.setAttribute('type', 'text');
|
||||||
input_boss.setAttribute('placeholder', 'Иванов Иван Иванович');
|
input_boss.setAttribute('placeholder', 'Иванов Иван Иванович');
|
||||||
|
@ -249,7 +251,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "SIMC" (телефон)
|
// Инициализация поля "SIMC" (телефон)
|
||||||
let input_simc = document.createElement('input');
|
let input_simc = document.createElement('input');
|
||||||
input_simc.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_simc_' + account._key);
|
input_simc.setAttribute('id', 'simc_' + account._key);
|
||||||
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 profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "simc", this.value);');
|
input_simc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "simc", this.value);');
|
||||||
|
@ -262,7 +264,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "MAIL"
|
// Инициализация поля "MAIL"
|
||||||
let input_mail = document.createElement('input');
|
let input_mail = document.createElement('input');
|
||||||
input_mail.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_mail_' + account._key);
|
input_mail.setAttribute('id', 'mail_' + account._key);
|
||||||
input_mail.setAttribute('class', 'form-control button_clean mb-3');
|
input_mail.setAttribute('class', 'form-control button_clean mb-3');
|
||||||
input_mail.setAttribute('type', 'mail');
|
input_mail.setAttribute('type', 'mail');
|
||||||
input_mail.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "mail", this.value);');
|
input_mail.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "mail", this.value);');
|
||||||
|
@ -270,7 +272,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация колонки с вторичными данными аккаунта
|
// Инициализация колонки с вторичными данными аккаунта
|
||||||
let block_details = document.createElement('div');
|
let block_details = document.createElement('div');
|
||||||
block_details.setAttribute('id', 'profile_panel_input_suppliers_requests_block_details_' + account._key);
|
block_details.setAttribute('id', 'details_' + account._key);
|
||||||
block_details.setAttribute('class', 'col-4 d-flex flex-column');
|
block_details.setAttribute('class', 'col-4 d-flex flex-column');
|
||||||
|
|
||||||
// Инициализация ярлыка "INDX"
|
// Инициализация ярлыка "INDX"
|
||||||
|
@ -284,7 +286,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "INDX"
|
// Инициализация поля "INDX"
|
||||||
let input_indx = document.createElement('input');
|
let input_indx = document.createElement('input');
|
||||||
input_indx.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_indx_' + account._key);
|
input_indx.setAttribute('id', 'indx_' + account._key);
|
||||||
input_indx.setAttribute('class', 'col form-control button_clean');
|
input_indx.setAttribute('class', 'col form-control button_clean');
|
||||||
input_indx.setAttribute('type', 'text');
|
input_indx.setAttribute('type', 'text');
|
||||||
input_indx.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "indx", this.value);');
|
input_indx.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "indx", this.value);');
|
||||||
|
@ -295,7 +297,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
button_indx.setAttribute('class', 'ml-2 my-auto text-dark');
|
button_indx.setAttribute('class', 'ml-2 my-auto text-dark');
|
||||||
button_indx.setAttribute('type', 'button');
|
button_indx.setAttribute('type', 'button');
|
||||||
button_indx.setAttribute('role', 'button');
|
button_indx.setAttribute('role', 'button');
|
||||||
button_indx.innerHTML = '<i class="fas fa-redo-alt"></i>';
|
button_indx.innerHTML = '<i class="fas fa-redo-alt" onclick="return profile_panel_input_suppliers_requests_block_regen(' + account._key + ', \'indx\');"></i>';
|
||||||
|
|
||||||
// // Инициализация ярлыка "PSWD"
|
// // Инициализация ярлыка "PSWD"
|
||||||
// let label_pswd = document.createElement('label');
|
// let label_pswd = document.createElement('label');
|
||||||
|
@ -308,7 +310,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// // Инициализация поля "PSWD"
|
// // Инициализация поля "PSWD"
|
||||||
// let input_pswd = document.createElement('input');
|
// let input_pswd = document.createElement('input');
|
||||||
// input_pswd.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_pswd_' + account._key);
|
// input_pswd.setAttribute('id', 'pswd_' + account._key);
|
||||||
// input_pswd.setAttribute('class', 'col form-control button_clean');
|
// input_pswd.setAttribute('class', 'col form-control button_clean');
|
||||||
// input_pswd.setAttribute('type', 'text');
|
// input_pswd.setAttribute('type', 'text');
|
||||||
// input_pswd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "pswd", this.value);');
|
// input_pswd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "pswd", this.value);');
|
||||||
|
@ -329,7 +331,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
// Инициализация ссылки на "FILE"
|
// Инициализация ссылки на "FILE"
|
||||||
let button_file = document.createElement('a');
|
let button_file = document.createElement('a');
|
||||||
button_file.setAttribute('class', 'btn form-control button_blue');
|
button_file.setAttribute('class', 'btn form-control button_blue');
|
||||||
button_file.setAttribute('href', '/' + account._key + '/requests/supplier/' + account.date.supl + '/document');
|
button_file.setAttribute('href', account.data.file.uri);
|
||||||
button_file.innerHTML = 'Скачать';
|
button_file.innerHTML = 'Скачать';
|
||||||
|
|
||||||
// Инициализация ярлыка "TAXN"
|
// Инициализация ярлыка "TAXN"
|
||||||
|
@ -339,7 +341,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "TAXN"
|
// Инициализация поля "TAXN"
|
||||||
let input_taxn = document.createElement('input');
|
let input_taxn = document.createElement('input');
|
||||||
input_taxn.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_taxn_' + account._key);
|
input_taxn.setAttribute('id', 'taxn_' + account._key);
|
||||||
input_taxn.setAttribute('class', 'form-control button_clean mb-3');
|
input_taxn.setAttribute('class', 'form-control button_clean mb-3');
|
||||||
input_taxn.setAttribute('type', 'text');
|
input_taxn.setAttribute('type', 'text');
|
||||||
input_taxn.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "taxn", this.value);');
|
input_taxn.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "taxn", this.value);');
|
||||||
|
@ -352,7 +354,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "CNTG"
|
// Инициализация поля "CNTG"
|
||||||
let input_cntg = document.createElement('input');
|
let input_cntg = document.createElement('input');
|
||||||
input_cntg.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_cntg_' + account._key);
|
input_cntg.setAttribute('id', 'cntg_' + account._key);
|
||||||
input_cntg.setAttribute('class', 'form-control button_clean mb-3');
|
input_cntg.setAttribute('class', 'form-control button_clean mb-3');
|
||||||
input_cntg.setAttribute('type', 'text');
|
input_cntg.setAttribute('type', 'text');
|
||||||
input_cntg.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "cntg", this.value);');
|
input_cntg.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "cntg", this.value);');
|
||||||
|
@ -365,7 +367,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "FADD"
|
// Инициализация поля "FADD"
|
||||||
let input_fadd = document.createElement('input');
|
let input_fadd = document.createElement('input');
|
||||||
input_fadd.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_fadd_' + account._key);
|
input_fadd.setAttribute('id', 'fadd_' + account._key);
|
||||||
input_fadd.setAttribute('class', 'form-control button_clean mb-3');
|
input_fadd.setAttribute('class', 'form-control button_clean mb-3');
|
||||||
input_fadd.setAttribute('type', 'text');
|
input_fadd.setAttribute('type', 'text');
|
||||||
input_fadd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "fadd", this.value);');
|
input_fadd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "fadd", this.value);');
|
||||||
|
@ -378,7 +380,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "LADD"
|
// Инициализация поля "LADD"
|
||||||
let input_ladd = document.createElement('input');
|
let input_ladd = document.createElement('input');
|
||||||
input_ladd.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_ladd_' + account._key);
|
input_ladd.setAttribute('id', 'ladd_' + account._key);
|
||||||
input_ladd.setAttribute('class', 'form-control button_clean mb-3');
|
input_ladd.setAttribute('class', 'form-control button_clean mb-3');
|
||||||
input_ladd.setAttribute('type', 'text');
|
input_ladd.setAttribute('type', 'text');
|
||||||
input_ladd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "ladd", this.value);');
|
input_ladd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "ladd", this.value);');
|
||||||
|
@ -391,7 +393,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "CHCK"
|
// Инициализация поля "CHCK"
|
||||||
let input_chck = document.createElement('input');
|
let input_chck = document.createElement('input');
|
||||||
input_chck.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_chck_' + account._key);
|
input_chck.setAttribute('id', 'chck_' + account._key);
|
||||||
input_chck.setAttribute('class', 'form-control button_clean mb-3');
|
input_chck.setAttribute('class', 'form-control button_clean mb-3');
|
||||||
input_chck.setAttribute('type', 'text');
|
input_chck.setAttribute('type', 'text');
|
||||||
input_chck.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "chck", this.value);');
|
input_chck.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "chck", this.value);');
|
||||||
|
@ -404,7 +406,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "COMP"
|
// Инициализация поля "COMP"
|
||||||
let input_comp = document.createElement('input');
|
let input_comp = document.createElement('input');
|
||||||
input_comp.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_comp_' + account._key);
|
input_comp.setAttribute('id', 'comp_' + account._key);
|
||||||
input_comp.setAttribute('class', 'form-control button_clean mb-3');
|
input_comp.setAttribute('class', 'form-control button_clean mb-3');
|
||||||
input_comp.setAttribute('type', 'text');
|
input_comp.setAttribute('type', 'text');
|
||||||
input_comp.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "comp", this.value);');
|
input_comp.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "comp", this.value);');
|
||||||
|
@ -417,7 +419,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "CNTC"
|
// Инициализация поля "CNTC"
|
||||||
let input_cntc = document.createElement('textarea');
|
let input_cntc = document.createElement('textarea');
|
||||||
input_cntc.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_cntc_' + account._key);
|
input_cntc.setAttribute('id', 'cntc_' + account._key);
|
||||||
input_cntc.setAttribute('class', 'form-control button_clean profile_panel_input_suppliers_requests_block_textarea');
|
input_cntc.setAttribute('class', 'form-control button_clean profile_panel_input_suppliers_requests_block_textarea');
|
||||||
input_cntc.setAttribute('type', 'text');
|
input_cntc.setAttribute('type', 'text');
|
||||||
input_cntc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "cntc", this.value);');
|
input_cntc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "cntc", this.value);');
|
||||||
|
@ -430,7 +432,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
|
|
||||||
// Инициализация поля "DESC"
|
// Инициализация поля "DESC"
|
||||||
let textarea_desc = document.createElement('textarea');
|
let textarea_desc = document.createElement('textarea');
|
||||||
textarea_desc.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_desc_' + account._key);
|
textarea_desc.setAttribute('id', 'desc_' + account._key);
|
||||||
textarea_desc.setAttribute('class', 'form-control button_clean mb-3 profile_panel_input_suppliers_requests_block_textarea');
|
textarea_desc.setAttribute('class', 'form-control button_clean mb-3 profile_panel_input_suppliers_requests_block_textarea');
|
||||||
textarea_desc.setAttribute('type', 'text');
|
textarea_desc.setAttribute('type', 'text');
|
||||||
textarea_desc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "desc", this.value);');
|
textarea_desc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "desc", this.value);');
|
||||||
|
@ -551,9 +553,18 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Редактирование параметра
|
||||||
|
*
|
||||||
|
* @param {*} _key
|
||||||
|
* @param {*} target
|
||||||
|
* @param {*} value
|
||||||
|
*
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
function profile_panel_input_suppliers_requests_block_edit(_key, target, value) {
|
function profile_panel_input_suppliers_requests_block_edit(_key, target, value) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: `/account/${_key}/${target}/edit`,
|
url: `/${_key}/${target}/edit`,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
data: {
|
data: {
|
||||||
|
@ -566,3 +577,89 @@ function profile_panel_input_suppliers_requests_block_edit(_key, target, value)
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Регенерация параметра
|
||||||
|
*
|
||||||
|
* @param {*} _key
|
||||||
|
* @param {*} target
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
function profile_panel_input_suppliers_requests_block_regen(_key, target) {
|
||||||
|
$.ajax({
|
||||||
|
url: `/${_key}/${target}/regenerate`,
|
||||||
|
type: 'post',
|
||||||
|
dataType: 'json',
|
||||||
|
data: {
|
||||||
|
'_csrf': yii.getCsrfToken()
|
||||||
|
},
|
||||||
|
success: (data, status, xhr) => {
|
||||||
|
// Реинициализация списка
|
||||||
|
page_profile_panel_input_suppliers_requests_init();
|
||||||
|
|
||||||
|
return page_profile_response_success(data, status, xhr);
|
||||||
|
},
|
||||||
|
error: page_profile_response_error
|
||||||
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Подтверждение регистрации
|
||||||
|
*
|
||||||
|
* @param {*} _key
|
||||||
|
* @param {*} target
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
function profile_panel_input_suppliers_requests_block_accept(_key) {
|
||||||
|
$.ajax({
|
||||||
|
url: `/${_key}/accept`,
|
||||||
|
type: 'post',
|
||||||
|
dataType: 'json',
|
||||||
|
data: {
|
||||||
|
'_csrf': yii.getCsrfToken()
|
||||||
|
},
|
||||||
|
success: (data, status, xhr) => {
|
||||||
|
// Реинициализация списка
|
||||||
|
page_profile_panel_input_suppliers_requests_init();
|
||||||
|
|
||||||
|
return page_profile_response_success(data, status, xhr);
|
||||||
|
},
|
||||||
|
error: page_profile_response_error
|
||||||
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Отклонение регистрации
|
||||||
|
*
|
||||||
|
* @param {*} _key
|
||||||
|
* @param {*} target
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
function profile_panel_input_suppliers_requests_block_decline(_key, reason) {
|
||||||
|
if (reason === undefined) {
|
||||||
|
reason = prompt('Причина отказа', 'Недостаточно данных');
|
||||||
|
}
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: `/${_key}/decline`,
|
||||||
|
type: 'post',
|
||||||
|
dataType: 'json',
|
||||||
|
data: {
|
||||||
|
'_csrf': yii.getCsrfToken(),
|
||||||
|
reason
|
||||||
|
},
|
||||||
|
success: (data, status, xhr) => {
|
||||||
|
// Реинициализация списка
|
||||||
|
page_profile_panel_input_suppliers_requests_init();
|
||||||
|
|
||||||
|
return page_profile_response_success(data, status, xhr);
|
||||||
|
},
|
||||||
|
error: page_profile_response_error
|
||||||
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
Reference in New Issue