pdv.backend/app/Http/Requests/ClientTiers/ClientTierUpdateRequest.php
2026-01-28 16:46:31 -06:00

57 lines
1.8 KiB
PHP

<?php
namespace App\Http\Requests\ClientTiers;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class ClientTierUpdateRequest 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.
*/
public function rules(): array
{
$tierId = $this->route('tier')->id ?? $this->route('id');
return [
'tier_name' => [
'sometimes',
'required',
'string',
'max:100',
Rule::unique('client_tiers', 'tier_name')->ignore($tierId),
],
'min_purchase_amount' => ['sometimes', 'required', 'numeric', 'min:0'],
'max_purchase_amount' => ['nullable', 'numeric', 'gt:min_purchase_amount'],
'discount_percentage' => ['sometimes', 'required', 'numeric', 'min:0', 'max:100'],
'is_active' => ['boolean'],
];
}
/**
* Get custom messages for validator errors.
*/
public function messages(): array
{
return [
'tier_name.required' => 'El nombre del tier es requerido',
'tier_name.unique' => 'Ya existe un tier con este nombre',
'min_purchase_amount.required' => 'El monto mínimo es requerido',
'min_purchase_amount.min' => 'El monto mínimo debe ser mayor o igual a 0',
'max_purchase_amount.gt' => 'El monto máximo debe ser mayor al monto mínimo',
'discount_percentage.required' => 'El porcentaje de descuento es requerido',
'discount_percentage.min' => 'El descuento debe ser mayor o igual a 0',
'discount_percentage.max' => 'El descuento no puede ser mayor a 100%',
];
}
}