<?php

declare(strict_types=1);

namespace app\models;

use app\models\File;
use app\models\Import;

/**
 * Связь инстанций импорта с поставками
 */
class ImportEdgeFile extends Edge
{
    /**
     * Имя коллекции
     */
    public static function collectionName(): string
    {
        return 'import_edge_file';
    }

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

    /**
     * Метки свойств
     */
    public function attributeLabels(): array
    {
        return array_merge(
            parent::attributeLabels(),
            [
            ]
        );
    }

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

    /**
     * Поиск по файлу
     *
     * @param File $file Файл
     * @param int $limit Ограничение по максимальному количеству
     */
    public static function searchByFile(File $file, int $limit = 1): array
    {
        return static::find()->where(['_to' => $file->readId(), 'type' => 'connected'])->limit($limit)->all();
    }

    /**
     * Поиск по инстанции импорта
     *
     * @param Import $import Инстанция импорта
     * @param int $limit Ограничение по максимальному количеству
     */
    public static function searchByImport(Import $import, int $limit = 1): array
    {
        return static::find()->where(['_from' => $import->readId(), 'type' => 'connected'])->limit($limit)->all();
    }
}
