<?php
namespace app\models;
use Yii;
use yii\base\Model;
use yii\web\UploadedFile;

class RestaurantSettingsForm extends Model {
    public $name;
    public $average_time;
    public $imageFile;
    public $category;

    public function rules()
    {
        return [
            [['name', 'average_time', 'category'], 'required'],
            ['name', 'string', 'max' => 256],
            ['average_time', 'integer', 'min' => 1, 'max' => 180],
            ['category', 'string', 'max' => 100],
            ['category', 'in', 'range' => ['Русская кухня', 'Грузинская кухня', 'Кавказская кухня', 'Итальянская кухня', 'Авторская кухня']],
            [['imageFile'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg, jpeg, gif', 'maxSize' => 2 * 1024 * 1024],
        ];  
    }

    public function attributeLabels()
    {
        return [
            'name' => 'Название ресторана',
            'average_time' => 'Среднее время приготовления (минут)',
            'imageFile' => 'Изображение ресторана',
            'category' => 'Кухня',
        ];
    }

    public function getCategories()
    {
        return [
            'Русская кухня' => 'Русская кухня',
            'Грузинская кухня' => 'Грузинская кухня', 
            'Кавказская кухня' => 'Кавказская кухня',
            'Итальянская кухня' => 'Итальянская кухня',
            'Авторская кухня' => 'Авторская кухня'
        ];
    }

    public function uploadFile()
    {
        $file = UploadedFile::getInstance($this, 'imageFile');
        if ($file) {
            $folder = Yii::getAlias('@webroot') . '/restaurant_imgs/';
            
            $fileName = Yii::$app->security->generateRandomString(16) . '.' . $file->extension;
            $filePath = $folder . $fileName;
            
            if ($file->saveAs($filePath)) {
                return $fileName;
            } else {
                $this->addError('imageFile', "Ошибка при сохранении файла: {$file->name}");
            }
        }
        
        return null;
    }

    public function saveSettings($restaurant)
    {
        if (!$this->validate()) {
            return false;
        }

        $fileName = $this->uploadFile();
        if ($fileName) {
            $restaurant->img = $fileName;
        }

        $restaurant->name = $this->name;
        $restaurant->average_time = $this->average_time;
        $restaurant->category = $this->category; // Сохраняем категорию
        
        return $restaurant->save();
    }
}