<?php
/**
 * Created by Error202
 * Date: 04.06.2018
 */

namespace core\entities;

use Yii;
use yii\db\ActiveRecord;
use yii\behaviors\TimestampBehavior;
use core\behaviors\LanguageBehavior;

/**
 * @property string $type
 * @property string $section
 * @property string $key
 * @property integer $active
 * @property integer $created_at
 * @property integer $updated_at
 */

class Settings extends ActiveRecord
{
    public Settings $_form;

    public static function tableName(): string
    {
        return '{{%settings}}';
    }

    public function attributeLabels()
    {
        return [
            'type'       => Yii::t('main', 'Type'),
            'section'    => Yii::t('main', 'Section'),
            'key'        => Yii::t('main', 'Key'),
            'value'      => Yii::t('main', 'Value'),
            'active'     => Yii::t('main', 'Active'),
            'created_at' => Yii::t('main', 'Created At'),
            'updated_at' => Yii::t('main', 'Updated At'),
        ];
    }

    public static function create($form, $type, $section, $key, $active): self
    {
        $settings          = new static();
        $settings->type    = $type;
        $settings->section = $section;
        $settings->key     = $key;
        $settings->active  = $active;

        $settings->_form   = $form;

        return $settings;
    }

    public function edit($form, $type, $section, $key, $active): void
    {
        $this->type    = $type;
        $this->section = $section;
        $this->key     = $key;
        $this->active  = $active;

        $this->_form   = $form;
    }

    public function behaviors(): array
    {
        return [
            TimestampBehavior::class,
            [
                'class'               => LanguageBehavior::class,
                'virtualClassName'    => 'SettingsVirtualTranslate',
                'translatedLanguages' => Yii::$app->params['translatedLanguages'],
                'relativeField'       => ['section', 'key'],
                'tableName'           => '{{%settings_lng}}',
                'attributes'          => ['value'],
                'defaultLanguage'     => Yii::$app->params['defaultLanguage'],
            ],
        ];
    }
}