add property and property definition
This commit is contained in:
86
common/manager/PropertySettingsManager.php
Normal file
86
common/manager/PropertySettingsManager.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace common\manager;
|
||||
|
||||
use common\helpers\AppArrayHelper;
|
||||
use common\models\Property;
|
||||
use common\models\PropertyDefinition;
|
||||
use common\models\PropertySetting;
|
||||
use common\models\PropertySettingModel;
|
||||
|
||||
class PropertySettingsManager
|
||||
{
|
||||
|
||||
/**
|
||||
* @return PropertySetting[]
|
||||
*/
|
||||
public function getPropertySettings()
|
||||
{
|
||||
$settings = [];
|
||||
$definitions = PropertyDefinition::find()->all();
|
||||
$properties = Property::find()->all();
|
||||
|
||||
$propertyByDefinition = AppArrayHelper::objectArrayToMap($properties,
|
||||
function ($property) {
|
||||
return $property->id_property_definition;
|
||||
},
|
||||
function ($property) {
|
||||
return $property;
|
||||
}
|
||||
);
|
||||
|
||||
foreach ($definitions as $definition) {
|
||||
$setting = new PropertySetting([
|
||||
'property' => AppArrayHelper::getOrDefault($propertyByDefinition, $definition->id),
|
||||
'definition' => $definition
|
||||
]);
|
||||
$settings[] = $setting;
|
||||
}
|
||||
return $settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PropertySetting $setting
|
||||
*/
|
||||
public function saveSetting($setting ){
|
||||
Property::deleteAll(['id_property_definition' =>$setting->definition->id ]);
|
||||
$setting->property->save(false);
|
||||
}
|
||||
/**
|
||||
* @param PropertySetting[] $setting
|
||||
*/
|
||||
public function saveSettings($settings ){
|
||||
foreach ($settings as $setting){
|
||||
Property::deleteAll(['id_property_definition' =>$setting->definition->id ]);
|
||||
$setting->property->save(false);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public function getSettingsMap(){
|
||||
$settings = $this->getPropertySettings();
|
||||
return AppArrayHelper::objectArrayToMap($settings,
|
||||
function ($setting){
|
||||
return $setting->definition->name;
|
||||
},
|
||||
function ($setting){
|
||||
return $setting->getValue();
|
||||
});
|
||||
}
|
||||
|
||||
public function getSettingFromSettingsMap($settingsMap,$key,$defaultValue = null){
|
||||
return AppArrayHelper::getOrDefault(
|
||||
$settingsMap,
|
||||
$key,
|
||||
$defaultValue
|
||||
);
|
||||
}
|
||||
|
||||
public function getSetting($key,$defaultValue = null){
|
||||
$settingsMap = $this->getSettingsMap();
|
||||
return $this->getSettingFromSettingsMap($settingsMap,$key,$defaultValue);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user