[
[
'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 '' . $model->name . '';
},
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[] = '' . $objectTemplateField->name . '';
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();
}
]);