<?php

declare(strict_types=1);

namespace app\models;

class AccountEdgeOrder extends Edge
{
    public static function collectionName(): string
    {
        return 'account_edge_order';
    }

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

    /**
     * Метки свойств
     */
    public function attributeLabels(): array
    {
        return array_merge(
            parent::attributeLabels(),
            [
                'stts' => 'Статус'
            ]
        );
    }

    /**
     * Правила
     */
    public function rules(): array
    {
        return array_merge(
            parent::rules(),
            [
                [
                    [
                        'stts'
                    ],
                    'string'
                ]
            ]
        );
    }

    /**
     * Перед сохранением
     *
     * @todo Подождать обновление от ебаного Yii2 и добавить
     * проверку типов передаваемых параметров
     */
    public function beforeSave($data): bool
    {
        if (parent::beforeSave($data)) {
            if ($this->isNewRecord) {
                $this->stts = 'current';
            }

            return true;
        }
        return false;
    }

    /**
     * Поиск по идентификатору заказа
     *
     * @param string $order_id Идентификатор записи заказа в базе данных
     * @param int $limit Ограничение
     *
     * @return array|null
     */
    public static function searchByOrder(string $order_id, int $limit = 1): ?array
    {
        return self::find()->where(['_to' => $order_id])->limit($limit)->all();
    }
}
