<?php

namespace App\Http\Requests\SuperAdmin;

use Illuminate\Foundation\Http\FormRequest;

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

    public function rules(): array
    {
        return [
            'name' => 'required|string|max:255',
            'description' => 'nullable|string|max:1000',
            'sections' => 'nullable|array',
            'sections.*.id' => 'nullable|integer|exists:template_sections,id',
            'sections.*.title' => 'required|string|max:255',
            'sections.*.order' => 'required|integer|min:1',
            'sections.*.rules' => 'nullable|array',
            'sections.*.rules.*' => 'integer|exists:section_rules,id',
        ];
    }

    public function messages(): array
    {
        return [
            'name.required' => 'El nombre de la plantilla de contrato es obligatorio.',
            'name.string' => 'El nombre de la plantilla de contrato debe ser una cadena de texto.',
            'name.max' => 'El nombre de la plantilla de contrato no puede exceder los :max caracteres.',

            'description.string' => 'La descripción debe ser una cadena de texto.',
            'description.max' => 'La descripción no puede exceder los :max caracteres.',

            'sections.array' => 'Las secciones deben ser un arreglo válido.',

            'sections.*.id.integer' => 'El ID de la sección debe ser un número entero válido.',
            'sections.*.id.exists' => 'La sección seleccionada no existe.',

            'sections.*.title.required' => 'El título de la sección es obligatorio.',
            'sections.*.title.string' => 'El título de la sección debe ser una cadena de texto.',
            'sections.*.title.max' => 'El título de la sección no puede exceder los :max caracteres.',
            'sections.*.order.required' => 'El orden de la sección es obligatorio.',
            'sections.*.order.integer' => 'El orden de la sección debe ser un número entero.',
            'sections.*.order.min' => 'El orden de la sección debe ser al menos 1.',

            'sections.*.rules.array' => 'Las reglas asignadas deben ser un arreglo válido.',
            'sections.*.rules.*.integer' => 'Cada regla debe ser un número entero válido.',
            'sections.*.rules.*.exists' => 'La regla seleccionada no es válida.',
        ];
    }
}
