<?php

declare(strict_types=1);

namespace app\models;

use yii;
use yii\web\UploadedFile;
use yii\imagine\Image;

use app\models\traits\SearchByEdge;
use moonland\phpexcel\Excel;

use Exception;

/**
 * Запрос (регистрация поставщика)
 *
 * Представляет собой набор данных от поставщика для регистрации
 */
class Request extends Document
{
    /**
     * Файл с данными ("Карточка предприятия")
     */
    public string|array|null $file = null;

    /**
     * Имя коллекции
     */
    public static function collectionName(): string
    {
        return 'request';
    }

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

    /**
     * Метки свойств
     */
    public function attributeLabels(): array
    {
        return array_merge(
            parent::attributeLabels(),
            [
                'name' => 'ФИО',
                'phon' => 'Телефон',
                'mail' => 'Почта',
                'file' => 'Карточка предприятия'
            ]
        );
    }

    /**
     * Правила
     *
     * @todo Правило для всех трёх габаритов
     */
    public function rules(): array
    {
        return array_merge(
            parent::rules(),
            [
                [
                    [
                        'file',
                        'mail'
                    ],
                    'required',
                    'message' => 'Обязательные поля: {attribute}'
                ],
                [
                    'file',
                    'file',
                    'skipOnEmpty' => false,
                    // 'extensions' => 'xlsx',
                    'checkExtensionByMimeType' => false,
                    'maxFiles' => 1,
                    'maxSize' => 1024 * 1024 * 30,
                    // 'wrongExtension' => 'Разрешены только документы в формате: ".xlsx"',
                    'message' => 'Проблема при чтении документа'
                ]
            ]
        );
    }
}
