148 lines
7.0 KiB
PHP
148 lines
7.0 KiB
PHP
<?php
|
|
|
|
use app\models\History;
|
|
use app\models\ObjectTemplate;
|
|
use app\models\ObjectTemplateField;
|
|
use app\services\Auth;
|
|
use app\widgets\FormWidget;
|
|
use app\widgets\services\Includes;
|
|
use app\widgets\TableWidget;
|
|
|
|
$model = ObjectTemplate::getModel();
|
|
$tab = $_GET['tab'] ?? 'main';
|
|
TableWidget::widget([
|
|
'filter' => [
|
|
[
|
|
'heritage_type' => ['Вид наследсво', 'c3', ObjectTemplate::heritageTypes()],
|
|
'name' => ['Наименование', 'c2'],
|
|
],
|
|
],
|
|
'top' => [
|
|
'title' => 'Видове обекти',
|
|
'data' => [
|
|
'index/dashboard' => 'Начало',
|
|
'nomenclature/categories' => 'Номенклатури',
|
|
]
|
|
],
|
|
'actions' => [
|
|
'new' => 'Нов вид обект',
|
|
'edit' => 'Редакция на вид обект',
|
|
'delete' => 'Изтриване на вид обект'
|
|
],
|
|
'th' => [
|
|
'№' => 'c0 text-right',
|
|
'Наименование на вид обект' => '',
|
|
'Вид наследсво' => '',
|
|
'Категории' => '',
|
|
'Полета' => ''
|
|
],
|
|
'data' => ObjectTemplate::find()->andWhere(Yii::$app->getFilterData('or'))->orderBy(['id' => SORT_DESC])->loop([
|
|
'id',
|
|
function (ObjectTemplate $model) {
|
|
return '<a href="' . Yii::$app->setQueryString(['o' => 'w', 'id' => $model->id]) . '">' . $model->name . '</a>';
|
|
},
|
|
function (ObjectTemplate $model) {
|
|
if ($model->heritage_type)
|
|
return ObjectTemplate::heritageTypes($model->heritage_type);
|
|
},
|
|
function (ObjectTemplate $model) {
|
|
return $model->categoryConcatList;
|
|
},
|
|
function (ObjectTemplate $model) {
|
|
if (!empty($model->objectTemplateFields)) {
|
|
$objectTemplateFields = [];
|
|
foreach ($model->objectTemplateFields as $objectTemplateField)
|
|
$objectTemplateFields[] = '<span style="margin: 1px !important; display: inline-block; font-size: 11px; background: var(--base-background-dark); color: #fff; padding: 2px 3px; border-radius: 4px">' . $objectTemplateField->name . '</span>';
|
|
return implode(' ', $objectTemplateFields);
|
|
}
|
|
}
|
|
], $_GET['p'] ?? 1, 30)
|
|
]);
|
|
|
|
|
|
FormWidget::widget([
|
|
'top' => [
|
|
'title' => 'Нов вид обект',
|
|
'title_edit' => 'Редакция на вид обект',
|
|
'data' => [
|
|
'index/dashboard' => 'Начало',
|
|
'nomenclature/categories' => 'Номенклатури',
|
|
'nomenclature/object-templates' => 'Видове обекти'
|
|
],
|
|
],
|
|
'tabs' => $tabs ?? [],
|
|
'writeView' => empty($_GET['id']) && empty($_GET['type']) ? "nomenclature/tabs/main/object_templates_w" : "nomenclature/tabs/" . Includes::tab($tab) . "/object_templates_w",
|
|
'model' => ObjectTemplate::class,
|
|
'validation' => function ($p) use ($tab) {
|
|
if ($tab == 'main') {
|
|
if (empty($p->{'name'}))
|
|
return ["name" => 'Моля, въведете наименованието на вида обект'];
|
|
if (empty($p->{'ts_en_name'}))
|
|
return ["ts_en_name" => 'Моля, въведете наименованието на вида обект на английски'];
|
|
|
|
if (empty($p->{'heritage_type'}))
|
|
return ["heritage_type" => 'Моля, изберете вид наследство'];
|
|
|
|
if (ObjectTemplate::exists(['name' => $p->{'name'}]))
|
|
return ["name" => 'Обект с това наименование вече съществува'];
|
|
|
|
if (ObjectTemplate::exists(['ts_en_name' => $p->{'ts_en_name'}]))
|
|
return ["ts_en_name" => 'Обект с това наименование вече съществува'];
|
|
|
|
if (isset($p->{'sub'})) {
|
|
foreach ($p->{'sub'} as $indexId => $value) {
|
|
if (empty($p->{'sub'}{$indexId}{'name'}))
|
|
return ["sub[$indexId][name]" => 'Моля, въведете наименование на полето'];
|
|
if (empty($p->{'sub'}{$indexId}{'ts_en_name'}))
|
|
return ["sub[$indexId][ts_en_name]" => 'Моля, въведете наименование на полето'];
|
|
if (empty($p->{'sub'}{$indexId}{'user_interface_type'}))
|
|
return ["sub[$indexId][user_interface_type]" => 'Моля, изберете тип на стойността'];
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
},
|
|
'postService' => function ($p, ObjectTemplate $model) {
|
|
|
|
$model->setPostDataToModel();
|
|
$model->save();
|
|
if (!empty($p->{'sub'})) {
|
|
foreach ($p->{'sub'} as $id => $name) {
|
|
$objectTemplateField = empty($_GET['id']) ? new ObjectTemplateField() : ObjectTemplateField::findOne($id);
|
|
$objectTemplateField->ot_id = $model->id;
|
|
$objectTemplateField->name = $name['name'];
|
|
$objectTemplateField->ts_en_name = $name['ts_en_name'];
|
|
$objectTemplateField->is_filter = empty($name['is_filter']) ? null : 1;
|
|
$objectTemplateField->user_interface_type = $name['user_interface_type'];
|
|
$userInterfaceTypeId = (int)$name['user_interface_type'];
|
|
if ($userInterfaceTypeId != 0) {
|
|
$objectTemplateField->common_field_id = $name['user_interface_type'];
|
|
} else {
|
|
$objectTemplateField->common_field_id = null;
|
|
}
|
|
//$objectTemplateField->data_type = $name['data_type'];
|
|
if (empty($_GET['id']))
|
|
$objectTemplateField->order_index = ObjectTemplateField::getNextOrderIndex($model->id);
|
|
$objectTemplateField->save();
|
|
if (empty($_GET['id']) && !empty($name['select_data'])) {
|
|
foreach (json_decode($name['select_data']) as $stdObject) {
|
|
$objectTemplateFieldOption = new ObjectTemplateField();
|
|
if (isset($stdObject->{'bg'}))
|
|
$objectTemplateFieldOption->name = $stdObject->{'bg'};
|
|
if (isset($stdObject->{'en'}))
|
|
$objectTemplateFieldOption->ts_en_name = $stdObject->{'en'};
|
|
if ($objectTemplateFieldOption->name) {
|
|
$objectTemplateFieldOption->parent_id = $objectTemplateField->id;
|
|
$objectTemplateFieldOption->save();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
History::addNew($model->id, 'object_template', Auth::userAdminGlobal()->getFullName() . ' - Глобален администратор', !empty($_GET['id']));
|
|
Yii::$app->flash('success', isset($_GET['id']) ? 'Вида обект е актуализирана успешно' : 'Вида обект е създадена успешно');
|
|
$model->smartRedirect();
|
|
}
|
|
]);
|