'required|exists:records,id', 'cancellation_reason' => 'required|in:fallo_lectura_handheld,cambio_parabrisas,roto_al_pegarlo,extravio,otro', 'cancellation_observations' => 'nullable|string', 'new_tag_number' => 'nullable|exists:tags,tag_number', ]; } /** * Get custom messages for validator errors. */ public function messages(): array { return [ 'record_id.required' => 'El id del expediente es obligatorio.', 'record_id.integer' => 'El id del expediente debe ser un número entero.', 'record_id.exists' => 'El expediente especificado no existe.', 'cancellation_reason.required' => 'El motivo de cancelación es obligatorio.', 'cancellation_reason.in' => 'El motivo de cancelación no es válido. Opciones: fallo_lectura_handheld, cambio_parabrisas, roto_al_pegarlo, extravio, otro.', 'cancellation_observations.string' => 'Las observaciones deben ser texto.', 'cancellation_observations.max' => 'Las observaciones no pueden exceder 1000 caracteres.', ]; } /** * Get custom attributes for validator errors. */ public function attributes(): array { return [ 'record_id' => 'id del expediente', 'cancellation_reason' => 'motivo de cancelación', 'cancellation_observations' => 'observaciones', ]; } }