<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

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

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
     */
    public function rules(): array
    {
        return [
            'fecha_inicio' => 'required|date',
            'numero_nurej' => 'required',
            'numero_cud' => ['nullable','regex:/^[A-Za-z0-9]+$/'],
            'numero_expediente' => ['nullable','regex:/^[A-Za-z0-9]+$/'],
            'numero_caso' => ['nullable','regex:/^[A-Za-z0-9]+$/'],
            'id_contraloria' => ['nullable','regex:/^[A-Za-z0-9]+$/'],
            'departamento_id' => 'required',
            'provincia_id' => 'required',
            'municipio_id' => 'required',
            'ciudad_id' => 'required|exists:par_ciudads,id',
            'descripcion_proceso' => 'required|string',
            'parte_demandante' => 'required|regex:/^[\pL\s]+$/u',
            'juzgado' => 'required',
            'daño_economico' => 'nullable|numeric',
            
            // 'tipo_delito_id' => 'required|exists:parametros,id',
            'tipo_proceso_id' => 'required|exists:parametros,id',
            'tipo_parte_demandante_id' => 'required|exists:parametros,id',

            'participantes' => 'required|array',
            'participantes.*.tipo' => 'required|exists:parametros,id',
            'participantes.*.nombre' => [
                    'required',
                    'string',
                    'max:255',
                    'regex:/^[\pL\s]+$/u'
                ],
            'participantes.*.contacto' => [
                'nullable',
                'regex:/^[0-9]+$/',
                'max:50'
            ], 
        ];
    }

    public function messages()
    {
        return [
            'fecha_inicio.required' => 'La fecha de inicio es obligatoria.',
            'numero_nurej.required' => 'El número NUREJ es obligatorio.',
            'departamento_id.required' => 'Debe seleccionar un departamento.',
            'provincia_id.required' => 'Debe seleccionar una provincia.',
            'municipio_id.required' => 'Debe seleccionar un municipio.',
            'ciudad_id.required' => 'Debe seleccionar una ciudad.',
            'ciudad_id.exists' => 'La ciudad seleccionada no es válida.',
            'descripcion_proceso.required' => 'La descripción del proceso es obligatoria.',
            'descripcion_proceso.min' => 'La descripción debe tener al menos 10 caracteres.',
            // 'tipo_delito_id.required' => 'Debe seleccionar un tipo de delito.',
            'tipo_proceso_id.required' => 'Debe seleccionar un tipo de proceso.',
            'tipo_parte_demandante_id.required' => 'Debe seleccionar el tipo de parte demandante.',
            'parte_demandante.required' => 'El nombre de la parte demandante es obligatorio.',
            'juzgado.required' => 'El juzgado es obligatorio.',
            // 'daño_economico.required' => 'El daño económico es obligatorio.',
            'daño_economico.numeric' => 'El daño económico debe ser un número.',
            // 'daño_economico.min' => 'El daño económico no puede ser negativo.',
            'participantes.required' => 'Debe agregar al menos un sujeto procesal.',
            'participantes.min' => 'Debe agregar al menos un sujeto procesal.',
            'participantes.*.tipo.required' => 'El tipo de participante es obligatorio.',
            'participantes.*.nombre.required' => 'El nombre del participante es obligatorio.',
            'participantes.*.nombre.regex' => 'El nombre solo debe contener letras.',
            'participantes.*.contacto.regex' => 'El contacto debe contener solo números separados por coma.',
        ];
    }
}
