/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/widgets/BudgetSettingsWidget.php
129 строк
3 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\widgets; use common\helpers\ClientHelper; use common\kdf\KParam; use common\models\ClientBudgetNotify; use common\models\ClientParam; use common\models\Email; use common\models\GradeNotifyEmail; use Yii; use yii\helpers\VarDumper; /** * Виджет - создание отчета по параметрам * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2020 */ class BudgetSettingsWidget extends BasePanelWidget { /** * @inheritdoc */ public $icon = 'icon-cogs'; /** * @inheritdoc */ public $title = 'Budget settings'; /** * @inheritdoc */ public $viewName = 'budget_settings.twig'; /** * Идентификатор клиента * @var null */ public $client_id = null; /** * @inheritdoc */ public function doRun() { $client_id = $this->client_id; if (!$client_id) { $client_id = ClientHelper::getId(); } $list = ClientHelper::getBudgetNotifyList($client_id); $email_list = implode('; ', $list); return [ 'client_id' => $client_id, 'depreciated_budgets' => ClientHelper::hasFlag(KParam::DO_NOT_PLACE_ORDERS_WITH_DEPRECIATED_BUDGETS, $client_id, -1), 'checked_admin' => ClientHelper::hasFlag(KParam::BUDGET_CHECKED_ADMIN, $client_id, -1), 'checked_department' => ClientHelper::hasFlag(KParam::BUDGET_CHECKED_DEPARTMENT, $client_id, -1), 'checked_team' => ClientHelper::hasFlag(KParam::BUDGET_CHECKED_TEAM, $client_id, -1), 'email_list' => $email_list ]; } /** * Сохранение данных */ public function doSave() { $client_id = Yii::$app->request->post('client_id'); if (!$client_id) { $client_id = ClientHelper::getId(); } $param_list = Yii::$app->request->post('param_list'); $email_list = Yii::$app->request->post('email_list'); ClientParam::deleteAll([ 'client_id' => $client_id, 'param_id' => [ KParam::DO_NOT_PLACE_ORDERS_WITH_DEPRECIATED_BUDGETS, KParam::BUDGET_CHECKED_ADMIN, KParam::BUDGET_CHECKED_DEPARTMENT, KParam::BUDGET_CHECKED_TEAM, ] ]); foreach ((array)$param_list as $param_id) { $cp = ClientParam::findOrNew([ 'client_id' => $client_id, 'param_id' => $param_id ]); if (!$cp->save()) { $this->addErrors($cp->errors); return false; } } ClientBudgetNotify::deleteAll(['client_id' => $client_id]); $email_list = str_replace([',', ';', ':'], ['#', '#', '#'], $email_list); $email_list = explode('#', $email_list); foreach ((array)$email_list as $email) { $the_email = Email::findOrNew([ 'value' => $email ]); if ($the_email->save()) { $cre = ClientBudgetNotify::findOrNew([ 'client_id' => $client_id, 'email_id' => $the_email->id ]); if (!$cre->save()) { $this->addErrors($cre->errors); return false; } } } return true; } }