<?php

declare(strict_types=1);

namespace app\models;

/**
 * Настройки
 */
class Settings extends Document
{
    /**
     * Имя коллекции
     */
    public static function collectionName(): string
    {
        return 'settings';
    }

    /**
     * Свойства
     */
    public function attributes(): array
    {
        return array_merge(
            parent::attributes(),
            [
                'search_period',
                'search_connect_keep',
                'delivery_from_default',
                'addition_global',
                'delivery_addition_global'
            ]
        );
    }

    /**
     * Метки свойств
     */
    public function attributeLabels(): array
    {
        return array_merge(
            parent::attributeLabels(),
            [
                'search_period' => 'Поисковый период',
                'search_connect_keep' => 'Режим удержания',
                'delivery_from_default' => 'Место отправки поставки по умолчанию',
                'addition_global' => 'Глобальная наценка',
                'delivery_addition_global' => 'Глобальная надбавка к доставке'
            ]
        );
    }

    /**
     * Правила
     */
    public function rules(): array
    {
        return array_merge(
            parent::rules(),
            [
                [
                    [
                        'search_period',
                        'delivery_from_default',
                        'delivery_addition_global'
                    ],
                    'integer',
                    'message' => '{attribute} должен хранить цифровое значение'
                ],
                [
                    [
                        'search_connect_keep',
                        'addition_global'
                    ],
                    'string',
                    'message' => '{attribute} должен хранить строковый тип'
                ]
            ]
        );
    }

    /**
     * Найти активную запись с настройками
     *
     * @todo Доделать
     */
    public static function searchActive(): ?self
    {
        return static::findOne(['active' => true]);
    }
}
