<?php

namespace common\modules\languages\entities;

use common\modules\languages\entities\queries\LanguageQuery;
use yii\db\ActiveRecord;
use Yii;


/**
 * This is the model class for table "languages".
 *
 * @property int $id
 * @property string $title
 * @property string $name
 * @property int $default
 * @property int $status
 *
 */
class Language extends ActiveRecord
{
	const STATUS_DRAFT = 0;
	const STATUS_ACTIVE = 1;

	const DEFAULT_TRUE = 1;
	const DEFAULT_FALSE = 0;

	public static function create($name, $title, $status): self
	{
		$language = new static();
		$language->name = $name;
		$language->title = $title;
		$language->status = $status;
		return $language;
	}

	public function edit($name, $title, $status): void
	{
		$this->name = $name;
		$this->title = $title;
		$this->status = $status;
	}

    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'languages';
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => Yii::t('languages', 'ID'),
            'name' => Yii::t('languages', 'Name'),
            'title' => Yii::t('languages', 'Title'),
            'status' => Yii::t('languages', 'Status'),
            'default' => Yii::t('languages', 'Default'),
        ];
    }

	public function activate(): void
	{
		if ($this->isActive()) {
			throw new \DomainException('Language is already active.');
		}
		$this->status = self::STATUS_ACTIVE;
	}

	public function draft(): void
	{
		if ($this->isDraft()) {
			throw new \DomainException('Language is already draft.');
		}
		$this->status = self::STATUS_DRAFT;
	}

	public function isActive(): bool
	{
		return $this->status == self::STATUS_ACTIVE;
	}

	public function isDraft(): bool
	{
		return $this->status == self::STATUS_DRAFT;
	}

	public static function find(): LanguageQuery
	{
		return new LanguageQuery(static::class);
	}
}