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

class CourierForm extends Model {
    public $user_id;
    public $passport;
    public $driver_license;
    public $status = 0;
    public $phone;
    public $auto;
    public $auto_number;
    public $estimation = 0;

    public function rules()
    {
        return [
            [['auto', 'auto_number'], 'required', 'message' => 'Это поле обязательно для заполнения'],
            [['passport', 'driver_license'], 'file', 'extensions' => 'png, jpg, jpeg', 'maxSize' => 1024 * 1024 * 200],
            ['status', 'default', 'value' => 0],
            [['phone'],'match','pattern'=>'/^\+7 \(\d{3}\) \d{3}-\d{2}-\d{2}$/', 'message' => 'Телефон должен быть в формате: +7 (999)999-99-99'],
            ['estimation', 'default', 'value' => 0],
            ['user_id', 'default', 'value' => Yii::$app->user->getId()],
            [['auto', 'auto_number'], 'string'],
            ['auto', 'string', 'max' => 20],
            ['auto_number', 'string', 'max' => 6],
        ];  
    }

    public function attributeLabels()
    {
        return [
            'passport' => 'Фото паспорта',
            'driver_license' => 'Фото водительского удостоверения',
            'auto' => 'Марка автомобиля',
            'auto_number' => 'Номер автомобиля',
            'phone' => 'Телефон'
        ];
    }

    public function uploadFiles()
    {
        $uploadedFiles = [];
        $attributes = ['passport', 'driver_license'];
        
        foreach ($attributes as $attribute) {
            $file = UploadedFile::getInstance($this, $attribute);
            if ($file) {
                $fileName = Yii::$app->security->generateRandomString(16) . '.' . $file->extension;
                $filePath = Yii::getAlias('@webroot/courier_documents/') . $fileName;
                
                if ($file->saveAs($filePath)) {
                    $uploadedFiles[$attribute] = $fileName;
                } else {
                    $this->addError($attribute, "Ошибка при сохранении файла: {$file->name}");
                }
            }
        }
        
        return $uploadedFiles;
    }

public function courier()
{
    $uploadedFiles = $this->uploadFiles();
    
    if (empty($uploadedFiles['passport'])) {
        Yii::error('Файл паспорта не загружен');
        $this->addError('passport', 'Не удалось загрузить файл паспорта');
        return false;
    }
    
    if (empty($uploadedFiles['driver_license'])) {
        Yii::error('Файл водительских прав не загружен');
        $this->addError('driver_license', 'Не удалось загрузить файл водительских прав');
        return false;
    }
    
    if (!$this->validate()) {
        Yii::error('Валидация НЕ пройдена');
        return false;
    }
    
    Yii::info('Валидация пройдена');
    
    $courier = new Courier();
    $courier->user_id = $this->user_id;
    $courier->passport = $uploadedFiles['passport'];
    $courier->driver_license = $uploadedFiles['driver_license'];
    $courier->auto = $this->auto;
    $courier->phone = $this->phone;
    $courier->estimation = $this->estimation;
    $courier->auto_number = $this->auto_number;
    $courier->status = $this->status;
    
    Yii::info('Данные курьера для сохранения:');
    Yii::info(print_r([
        'user_id' => $courier->user_id,
        'auto' => $courier->auto,
        'auto_number' => $courier->auto_number,
        'passport' => $courier->passport,
        'driver_license' => $courier->driver_license,
        'phone'=>$courier->phone,
        'estimation'=>$courier->estimation,
    ], true));
    
    if ($courier->save()) {
        Yii::info('Курьер успешно сохранен с ID: ' . $courier->id);
        return true;
    } else {
        return false;
    }
}
}