diff --git a/mirzaev/skillparts/system/controllers/AccountController.php b/mirzaev/skillparts/system/controllers/AccountController.php
new file mode 100644
index 0000000..a6155a4
--- /dev/null
+++ b/mirzaev/skillparts/system/controllers/AccountController.php
@@ -0,0 +1,102 @@
+ [
+ 'class' => AccessControl::class,
+ 'rules' => [
+ [
+ 'allow' => true,
+ 'roles' => ['@'],
+ 'actions' => [
+ 'index',
+ 'edit',
+ ]
+ ],
+ [
+ 'allow' => false,
+ 'roles' => ['?'],
+ 'denyCallback' => [$this, 'accessDenied']
+ ]
+ ]
+ ]
+ ];
+ }
+
+ public function accessDenied()
+ {
+ // Инициализация
+ $cookies = yii::$app->response->cookies;
+
+ // Запись cookie с редиректом, который выполнится после авторизации
+ $cookies->add(new Cookie([
+ 'name' => 'redirect',
+ 'value' => yii::$app->request->pathInfo
+ ]));
+
+ if (Yii::$app->request->isPost) {
+ // POST-запрос
+
+ // Настройка
+ Yii::$app->response->format = Response::FORMAT_JSON;
+
+ // Генерация ответа
+ Yii::$app->response->content = json_encode([
+ 'main' => $this->renderPartial('/account/index'),
+ 'redirect' => yii::$app->request->pathInfo,
+ '_csrf' => Yii::$app->request->getCsrfToken()
+ ]);
+ } else if (Yii::$app->request->isGet) {
+ // GET-запрос
+
+ $this->redirect('/authentication');
+ }
+ }
+
+ public function actionIndex()
+ {
+ return $this->renderPartial('/accounts/index');
+ }
+
+ public function actionEdit(int $_key, string $target)
+ {
+ if (yii::$app->user->isGuest) {
+ // Аккаунт не аутентифицирован
+ } else {
+ if (yii::$app->request->isPost) {
+ // AJAX-POST-запрос
+
+ if ($account = Account::searchById(Account::collectionName() . '/' . $_key)) {
+ // Аккаунт найден
+
+ // Запись параметра
+ $account->{$target} = yii::$app->request->post('value') ?? yii::$app->request->get('value') ?? 'Неизвестно';
+
+ // Настройка формата ответа
+ yii::$app->response->format = Response::FORMAT_JSON;
+
+ return $account->update() > 0;
+ }
+ }
+ }
+
+ // Запись кода ответа
+ yii::$app->response->statusCode = 500;
+
+ return false;
+ }
+}
diff --git a/mirzaev/skillparts/system/controllers/ProfileController.php b/mirzaev/skillparts/system/controllers/ProfileController.php
index 3bdacab..59ef208 100644
--- a/mirzaev/skillparts/system/controllers/ProfileController.php
+++ b/mirzaev/skillparts/system/controllers/ProfileController.php
@@ -10,7 +10,6 @@ use yii\web\Controller;
use yii\web\Response;
use yii\web\Cookie;
use yii\web\UploadedFile;
-use yii\web\User;
use app\models\Account;
use app\models\Supply;
@@ -21,9 +20,9 @@ use app\models\Settings;
use app\models\Dellin;
use app\models\SettingsEdgeSettings;
use app\models\Terminal;
+
use Dadata\DadataClient as Dadata;
-use Exception;
-use moonland\phpexcel\Excel;
+
use Throwable;
class ProfileController extends Controller
@@ -798,12 +797,14 @@ class ProfileController extends Controller
// Перебор журнала
if ($jrnl['action'] === 'create') {
- // Заявка найдена
+ // Запись о создании найдена
// Запись даты регистрации
$registration_date = $jrnl['date'];
- } else if ($jrnl['action'] === 'request to become a supplier') {
- // Заявка найдена
+ }
+
+ if ($jrnl['action'] === 'request to become a supplier') {
+ // Запись о подаче заявку на становление поставщиком найдена
// Запись даты отправки заявки
$supplier_date = $jrnl['date'];
@@ -816,26 +817,43 @@ class ProfileController extends Controller
if (empty($supplier_data) || empty($supplier_date) || empty($registration_date)) {
// Данные из журнала не найдены
- // Запись кода ответа
- yii::$app->response->statusCode = 500;
-
- return;
+ // Пропуск
+ continue;
}
- // Инициализация индекса
- Account::generateIndexes([$account]);
+ // if (!isset($account->indx) || empty($account->indx)) {
+ if (empty($account->indx)) {
+ // Индекс не инициализирован
- // Инициализация пароля
- $account->passwordInit();
+ // Инициализация индекса
+ Account::generateIndexes([$account]);
+ }
+
+ // if (!isset($account->pswd) || empty($account->pswd)) {
+ if (empty($account->pswd)) {
+ // Пароль не инициализирован
+
+ // Инициализация пароля
+ $account->passwordInit();
+ }
// Запись в буфер ответа
$response[] = [
'_key' => $account->_key,
'name' => $account->name,
'mail' => $account->mail,
+ 'boss' => $account->boss,
+ 'desc' => $account->desc,
'simc' => $account->simc,
+ 'simc' => $account->simc,
+ 'comp' => $account->comp,
+ 'cntc' => $account->cntc,
+ 'taxn' => $account->taxn,
+ 'cntg' => $account->cntg,
+ 'fadd' => $account->fadd,
+ 'ladd' => $account->ladd,
+ 'chck' => $account->chck,
'indx' => $account->indx,
- 'pswd' => $account->pswd,
'vrfy' => Account::validateVrfy($account->vrfy),
'data' => $supplier_data,
'date' => [
diff --git a/mirzaev/skillparts/system/models/Account.php b/mirzaev/skillparts/system/models/Account.php
index 8e43ba1..2fb68bd 100644
--- a/mirzaev/skillparts/system/models/Account.php
+++ b/mirzaev/skillparts/system/models/Account.php
@@ -38,22 +38,29 @@ class Account extends Document implements IdentityInterface, PartnerInterface
return array_merge(
parent::attributes(),
[
- 'auth',
+ 'name',
'mail',
+ 'desc',
'indx',
'pswd',
- 'name',
'simc',
- 'city',
+ 'boss',
+ 'sity',
'zone',
'comp',
+ 'cntc',
'taxn',
+ 'cntg',
+ 'fadd',
+ 'ladd',
+ 'chck',
'onec',
'opts',
'agnt',
'type',
'vrfy',
'geol',
+ 'auth',
'acpt'
]
);
@@ -67,22 +74,29 @@ class Account extends Document implements IdentityInterface, PartnerInterface
return array_merge(
parent::attributeLabels(),
[
- 'auth' => 'Аутентификационный хеш',
+ 'name' => 'Контактное лицо',
'mail' => 'Почта',
+ 'desc' => 'Описание',
'indx' => 'Псевдоанонимный идентификатор',
'pswd' => 'Пароль',
- 'name' => 'Имя',
'simc' => 'Номер',
+ 'boss' => 'Директор',
'sity' => 'Город',
'zone' => 'Часовой пояс',
'comp' => 'Компания',
+ 'cntc' => 'Контакты',
'taxn' => 'ИНН',
+ 'cntg' => 'КПП',
+ 'fadd' => 'Фактический адрес',
+ 'ladd' => 'Юридический адрес',
+ 'chck' => 'Расчетный счет',
'onec' => 'Данные 1C',
'opts' => 'Параметры',
'agnt' => 'Агент (поставщик)',
'type' => 'Тип аккаунта',
'vrfy' => 'Статус подтверждения владением почты',
'geol' => 'Геолокация',
+ 'auth' => 'Аутентификационный хеш',
'acpt' => 'Согласие с офертой'
]
);
diff --git a/mirzaev/skillparts/system/web/js/profile_panel.js b/mirzaev/skillparts/system/web/js/profile_panel.js
index e965137..30b31fc 100644
--- a/mirzaev/skillparts/system/web/js/profile_panel.js
+++ b/mirzaev/skillparts/system/web/js/profile_panel.js
@@ -65,7 +65,6 @@ function page_profile_panel_input_suppliers_requests_init() {
};
function page_profile_panel_suppliers_choose(button) {
-
if (button === 'profile_panel_input_suppliers') {
document.getElementById('profile_panel_input_notifications').addAttribute('onclick', 'return page_profile_panel_input_suppliers_notifications_init();');
document.getElementById('profile_panel_input_settings').addAttribute('onclick', 'return page_profile_panel_input_suppliers_settings_init();');
@@ -226,7 +225,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_name.setAttribute('class', 'form-control button_clean mb-3');
input_name.setAttribute('type', 'text');
input_name.setAttribute('placeholder', 'Иванов Иван Иванович');
- input_name.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_name_edit(' + account._key + ', this);');
+ input_name.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "name", this.value);');
input_name.value = account.name ?? '';
// Инициализация ярлыка "BOSS"
@@ -240,7 +239,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_boss.setAttribute('class', 'form-control button_clean mb-3');
input_boss.setAttribute('type', 'text');
input_boss.setAttribute('placeholder', 'Иванов Иван Иванович');
- input_boss.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_boss_edit(' + account._key + ', this);');
+ input_boss.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "boss", this.value);');
input_boss.value = account.boss ?? '';
// Инициализация ярлыка "SIMC" (телефон)
@@ -253,7 +252,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_simc.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_simc_' + account._key);
input_simc.setAttribute('class', 'form-control button_clean mb-3');
input_simc.setAttribute('type', 'number');
- input_simc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_simc_edit(' + account._key + ', this);');
+ input_simc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "simc", this.value);');
input_simc.value = account.simc ?? '';
// Инициализация ярлыка "MAIL"
@@ -266,7 +265,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_mail.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_mail_' + account._key);
input_mail.setAttribute('class', 'form-control button_clean mb-3');
input_mail.setAttribute('type', 'mail');
- input_mail.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_mail_edit(' + account._key + ', this);');
+ input_mail.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "mail", this.value);');
input_mail.value = account.mail ?? '';
// Инициализация колонки с вторичными данными аккаунта
@@ -288,7 +287,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_indx.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_indx_' + account._key);
input_indx.setAttribute('class', 'col form-control button_clean');
input_indx.setAttribute('type', 'text');
- input_indx.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_indx_edit(' + account._key + ', this);');
+ input_indx.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "indx", this.value);');
input_indx.value = account.indx ?? '';
// Инициализация кнопки "INDX"
@@ -298,29 +297,29 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
button_indx.setAttribute('role', 'button');
button_indx.innerHTML = '';
- // Инициализация ярлыка "PSWD"
- let label_pswd = document.createElement('label');
- label_pswd.setAttribute('class', 'control-label');
- label_pswd.innerText = 'Пароль';
+ // // Инициализация ярлыка "PSWD"
+ // let label_pswd = document.createElement('label');
+ // label_pswd.setAttribute('class', 'control-label');
+ // label_pswd.innerText = 'Пароль';
- // Инициализация оболочки "PSWD"
- let wrap_pswd = document.createElement('div');
- wrap_pswd.setAttribute('class', 'row mx-0 mb-3');
+ // // Инициализация оболочки "PSWD"
+ // let wrap_pswd = document.createElement('div');
+ // wrap_pswd.setAttribute('class', 'row mx-0 mb-3');
- // Инициализация поля "PSWD"
- let input_pswd = document.createElement('input');
- input_pswd.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_pswd_' + account._key);
- input_pswd.setAttribute('class', 'col form-control button_clean');
- input_pswd.setAttribute('type', 'text');
- input_pswd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_pswd_edit(' + account._key + ', this);');
- input_pswd.value = account.pswd ?? '';
+ // // Инициализация поля "PSWD"
+ // let input_pswd = document.createElement('input');
+ // input_pswd.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_pswd_' + account._key);
+ // input_pswd.setAttribute('class', 'col form-control button_clean');
+ // input_pswd.setAttribute('type', 'text');
+ // input_pswd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "pswd", this.value);');
+ // input_pswd.value = account.pswd ?? '';
- // Инициализация кнопки "PSWD"
- let button_pswd = document.createElement('a');
- button_pswd.setAttribute('class', 'ml-2 my-auto text-dark');
- button_pswd.setAttribute('type', 'button');
- button_pswd.setAttribute('role', 'button');
- button_pswd.innerHTML = '';
+ // // Инициализация кнопки "PSWD"
+ // let button_pswd = document.createElement('a');
+ // button_pswd.setAttribute('class', 'ml-2 my-auto text-dark');
+ // button_pswd.setAttribute('type', 'button');
+ // button_pswd.setAttribute('role', 'button');
+ // button_pswd.innerHTML = '';
// Инициализация ярлыка "FILE"
let label_file = document.createElement('label');
@@ -343,7 +342,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_taxn.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_taxn_' + account._key);
input_taxn.setAttribute('class', 'form-control button_clean mb-3');
input_taxn.setAttribute('type', 'text');
- input_taxn.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_taxn_edit(' + account._key + ', this);');
+ input_taxn.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "taxn", this.value);');
input_taxn.value = account.taxn ?? '';
// Инициализация ярлыка "CNTG"
@@ -356,7 +355,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_cntg.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_cntg_' + account._key);
input_cntg.setAttribute('class', 'form-control button_clean mb-3');
input_cntg.setAttribute('type', 'text');
- input_cntg.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_cntg_edit(' + account._key + ', this);');
+ input_cntg.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "cntg", this.value);');
input_cntg.value = account.cntg ?? '';
// Инициализация ярлыка "FADD"
@@ -369,7 +368,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_fadd.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_fadd_' + account._key);
input_fadd.setAttribute('class', 'form-control button_clean mb-3');
input_fadd.setAttribute('type', 'text');
- input_fadd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_fadd_edit(' + account._key + ', this);');
+ input_fadd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "fadd", this.value);');
input_fadd.value = account.fadd ?? '';
// Инициализация ярлыка "LADD"
@@ -382,34 +381,34 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_ladd.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_ladd_' + account._key);
input_ladd.setAttribute('class', 'form-control button_clean mb-3');
input_ladd.setAttribute('type', 'text');
- input_ladd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_ladd_edit(' + account._key + ', this);');
+ input_ladd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "ladd", this.value);');
input_ladd.value = account.ladd ?? '';
// Инициализация ярлыка "CHCK"
let label_chck = document.createElement('label');
label_chck.setAttribute('class', 'control-label');
- label_chck.innerText = 'Расчетный адрес';
+ label_chck.innerText = 'Расчетный счет';
// Инициализация поля "CHCK"
let input_chck = document.createElement('input');
input_chck.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_chck_' + account._key);
input_chck.setAttribute('class', 'form-control button_clean mb-3');
input_chck.setAttribute('type', 'text');
- input_chck.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_chck_edit(' + account._key + ', this);');
+ input_chck.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "chck", this.value);');
input_chck.value = account.chck ?? '';
- // Инициализация ярлыка "CMPN"
- let label_cmpn = document.createElement('label');
- label_cmpn.setAttribute('class', 'control-label');
- label_cmpn.innerText = 'Организация';
+ // Инициализация ярлыка "COMP"
+ let label_comp = document.createElement('label');
+ label_comp.setAttribute('class', 'control-label');
+ label_comp.innerText = 'Организация';
- // Инициализация поля "CMPN"
- let input_cmpn = document.createElement('input');
- input_cmpn.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_cmpn_' + account._key);
- input_cmpn.setAttribute('class', 'form-control button_clean mb-3');
- input_cmpn.setAttribute('type', 'text');
- input_cmpn.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_cmpn_edit(' + account._key + ', this);');
- input_cmpn.value = account.cmpn ?? '';
+ // Инициализация поля "COMP"
+ let input_comp = document.createElement('input');
+ input_comp.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_comp_' + account._key);
+ input_comp.setAttribute('class', 'form-control button_clean mb-3');
+ input_comp.setAttribute('type', 'text');
+ input_comp.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "comp", this.value);');
+ input_comp.value = account.comp ?? '';
// Инициализация ярлыка "CNTC"
let label_cntc = document.createElement('label');
@@ -421,7 +420,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_cntc.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_cntc_' + account._key);
input_cntc.setAttribute('class', 'form-control button_clean profile_panel_input_suppliers_requests_block_textarea');
input_cntc.setAttribute('type', 'text');
- input_cntc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_cntc_edit(' + account._key + ', this);');
+ input_cntc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "cntc", this.value);');
input_cntc.value = account.cntc ?? '';
// Инициализация ярлыка "DESC"
@@ -434,7 +433,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
textarea_desc.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_desc_' + account._key);
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('onchange', 'return profile_panel_input_suppliers_requests_block_desc_edit(' + account._key + ', this);');
+ textarea_desc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "desc", this.value);');
textarea_desc.value = account.desc ?? '';
// Инициализация разделителя для геолокации
@@ -470,10 +469,10 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
wrap_indx.appendChild(button_indx);
block_info.appendChild(wrap_indx);
- block_info.appendChild(label_pswd);
- wrap_pswd.appendChild(input_pswd);
- wrap_pswd.appendChild(button_pswd);
- block_info.appendChild(wrap_pswd);
+ // block_info.appendChild(label_pswd);
+ // wrap_pswd.appendChild(input_pswd);
+ // wrap_pswd.appendChild(button_pswd);
+ // block_info.appendChild(wrap_pswd);
block_info.appendChild(label_desc);
block_info.appendChild(textarea_desc);
@@ -485,8 +484,8 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
block_details.appendChild(label_boss);
block_details.appendChild(input_boss);
- block_details.appendChild(label_cmpn);
- block_details.appendChild(input_cmpn);
+ block_details.appendChild(label_comp);
+ block_details.appendChild(input_comp);
block_details.appendChild(label_taxn);
block_details.appendChild(input_taxn);
@@ -551,3 +550,19 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
// Возврат
return html;
}
+
+function profile_panel_input_suppliers_requests_block_edit(_key, target, value) {
+ $.ajax({
+ url: `/account/${_key}/${target}/edit`,
+ type: 'post',
+ dataType: 'json',
+ data: {
+ '_csrf': yii.getCsrfToken(),
+ 'value': value
+ },
+ success: page_profile_response_success,
+ error: page_profile_response_error
+ });
+
+ return false;
+}