<?php

namespace App\Http\Requests;

use App\Traits\ConvertsBase64ToFiles;
use Illuminate\Foundation\Http\FormRequest;

class ServicioRequest extends FormRequest
{
    use ConvertsBase64ToFiles;

    public function authorize(): bool
    {
        return true;
    }

    public function rules(): array
    {
        return [
            'titulo' => 'required|min:3|max:120',
            'descripcion' => 'required|min:3|max:500',
            'estado' => 'required|numeric',
            'color' => 'required|string',
            'imagen' =>   $this->imageRule(),
        ];
    }

    protected function prepareForValidation()
    {
        $input = $this->input();

        if ($this->method() !== 'POST') {
            $isBase64 = isImageBase64($input['imagen']);

            if (!$isBase64) {
                unset($input['imagen']);
                $this->replace($input ?? []);
                return;
            }
        }

        $this->convertBase64ToFiles();
    }

    protected function base64FileKeys(): array
    {
        return ['imagen'];
    }

    protected function imageRule()
    {
        $img = $this->method() === 'POST' ? 'required' : 'nullable';

        return [
            $img,
            'image',
            'mimes:webp,jpg,png',
            'dimensions:min_width=393,min_height=224'
        ];
    }
}
