<?php

declare(strict_types=1);

namespace app\models;

/**
 * Терминалы выдачи
 */
class Terminal extends Document
{
    public static function collectionName(): string
    {
        return 'terminal';
    }

    public function attributes(): array
    {
        return array_merge(
            parent::attributes(),
            [
                'name',
                'cntr',
                'city',
                'strt',
                'hous',
                'offs',
                'comm',
                'dell',
                'hndl'
            ]
        );
    }

    public function rules(): array
    {
        return array_merge(
            parent::rules(),
            [
                [
                    [
                        'name',
                        'cntr',
                        'city',
                        'strt',
                        'hous',
                        'offs',
                        'comm'
                    ],
                    'string'
                ],
                [
                    [
                        'dell',
                        'hndl'
                    ],
                    'integer'
                ]
            ]
        );
    }

    public function attributeLabels(): array
    {
        return array_merge(
            parent::attributeLabels(),
            [
                'name' => 'Название',
                'cntr' => 'Страна',
                'city' => 'Город',
                'strt' => 'Улица',
                'hous' => 'Дом',
                'offs' => 'Офис',
                'comm' => 'Комментарий',
                'dell' => 'Терминал ДеловыеЛинии для рассчётов доставки',
                'hndl' => 'Количество дней для обработки после получения от ДеловыеЛинии'
            ]
        );
    }

    /**
     * Поиск по индентификатору терминала ДеловыеЛинии
     *
     * @param string $dell Идентификатор терминала ДеловыеЛинии
     * @param int $limit Максимальное количество результатов поиска
     *
     * @return array|null Терминалы SkillParts, если найдены
     *
     * @todo Сделать привязку терминалов SkillParts к нескольким терминалам ДеловыеЛинии и переделать под это поиск
     */
    public static function searchByDellinTerminalId(string $dell, int $limit = 1): ?array
    {
        return self::find()->where(['dell' => $dell])->limit($limit)->all();
    }
}
