<?php

namespace App\Http\Requests;

use App\Rules\UniqueVehicleRegistrationNumber;
use Mtc\MercuryDataModels\VehicleType;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;

class AddVehicleRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return Auth::check();
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules(): array
    {
        return [
            'type' => ['sometimes', Rule::enum(VehicleType::class)],
            'title' => 'required_without:registration_number',
            'registration_number' => [
                'required_without:title',
                new UniqueVehicleRegistrationNumber(),
            ],
            'optional_extras' => 'sometimes|array',
            'optional_extras.*.code' => 'sometimes|nullable|string',
            'optional_extras.*.description' => 'required_with:optional_extras.*|string',
            'optional_extras.*.category' => 'sometimes|nullable|string',
            'optional_extras.*.price' => 'sometimes|nullable|numeric',
            'optional_extras.*.vat' => 'sometimes|nullable|numeric',
        ];
    }
}
