<?php

namespace App\Http\Requests;

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

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

    public function rules(): array
    {
        return [
            'fecha' => ['required', 'date'],
            'idlote' => ['required', 'integer', 'exists:lotes,id'],
            'tipopago' => ['required', Rule::in(['credito', 'contado', 'otros'])],

            'subtotal' => ['nullable', 'numeric', 'min:0'],
            'total' => ['required', 'numeric', 'min:0'],

            'cuotainicial' => ['nullable', 'numeric', 'min:0'],
            'ncuotas' => ['nullable', 'integer', 'min:0'],
            'cuotamensual' => ['nullable', 'numeric', 'min:0'],

            'observaciones' => ['nullable', 'string', 'max:2000'],

            // Para identificar cliente titular desde clientestmp
            'idcliente_tmp_titular' => ['required', 'integer', 'exists:clientestmp,id'],

            // Opcionales por si vienen en el form
            'idvendedor' => ['nullable', 'integer'],
            'codeudores_tmp' => ['nullable', 'array'],
            'codeudores_tmp.*' => ['integer', 'exists:clientestmp,id'],
        ];
    }

    public function messages(): array
    {
        return [
            'fecha.required' => 'La fecha del contrato es obligatoria.',
            'idlote.required' => 'Debe seleccionar un lote.',
            'idlote.exists' => 'El lote seleccionado no existe.',
            'tipopago.in' => 'El tipo de pago no es válido.',
            'idcliente_tmp_titular.required' => 'Debe seleccionar un cliente titular.',
            'idcliente_tmp_titular.exists' => 'El cliente titular no existe en temporales.',
        ];
    }
}