<?php

namespace App\Domains\Staff\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;

class UpdateStaffRequest extends FormRequest
{
    public function authorize(): bool
    {
        return true;
    }

    /** @return array<string, mixed> */
    public function rules(): array
    {
        $staffId = (int) $this->route('staff');
        $categoryRules = $this->user()->tenant()->firstOrFail()
            ->requiresScannerCategoryValidation()
            ? ['required', 'array', 'min:1']
            : ['sometimes', 'array'];

        return [
            'nombre_apellido' => ['required', 'string', 'max:255'],
            'dni' => ['required', 'string', 'max:50'],
            'email' => [
                'required',
                'email',
                'max:255',
                Rule::unique('users', 'email')->ignore($staffId),
            ],
            'category_ids' => $categoryRules,
            'category_ids.*' => ['integer', 'distinct', Rule::exists('categorias', 'id')],
        ];
    }
}
