78 lines
2.1 KiB
PHP
78 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace backend\controllers;
|
|
|
|
use common\helpers\AppArrayHelper;
|
|
use common\manager\PropertySettingsManager;
|
|
use common\models\PropertySettingModel;
|
|
|
|
class SettingsController extends BackendController
|
|
{
|
|
|
|
public function behaviors()
|
|
{
|
|
return [
|
|
'access' => [
|
|
'class' => \yii\filters\AccessControl::class,
|
|
'rules' => [
|
|
// allow authenticated users
|
|
[
|
|
'actions' => [
|
|
'index',
|
|
],
|
|
'allow' => true,
|
|
'roles' => [
|
|
'admin',
|
|
'employee',
|
|
'reception'
|
|
]
|
|
]
|
|
]
|
|
// everything else is denied
|
|
|
|
]
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Lists all Ticket models.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function actionIndex()
|
|
{
|
|
$settingsManager = new PropertySettingsManager();
|
|
$settings = $settingsManager->getPropertySettings();
|
|
$settingsMap = AppArrayHelper::objectArrayToMap($settings,
|
|
function ($setting) {
|
|
return $setting->definition->id;
|
|
},
|
|
function ($setting) {
|
|
return $setting;
|
|
});
|
|
|
|
$models = AppArrayHelper::mapValues($settings, function ($item) {
|
|
return PropertySettingModel::fromPropertySetting($item);
|
|
}
|
|
);
|
|
|
|
if (\Yii::$app->request->isPost) {
|
|
PropertySettingModel::loadMultiple($models, \Yii::$app->request->post());
|
|
|
|
foreach ($models as $model){
|
|
if ( isset($settingsMap[$model->id_definition])){
|
|
$setting = $settingsMap[$model->id_definition];
|
|
$setting->setValue($model->value);
|
|
}
|
|
}
|
|
|
|
$settingsManager->saveSettings(array_values($settingsMap));
|
|
}
|
|
return $this->render('index', [
|
|
'settings' => $models
|
|
]);
|
|
}
|
|
|
|
|
|
}
|