pdv.backend/app/Http/Requests/App/SubcategoryStoreRequest.php

57 lines
2.0 KiB
PHP

<?php namespace App\Http\Requests\App;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class SubcategoryStoreRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
$uniqueRule = Rule::unique('subcategories', 'name')
->where('category_id', $this->route('category')->id)
->withoutTrashed();
if($this->isBulk()) {
return [
'*.name' => ['required', 'string', 'max:100', $uniqueRule],
'*.description' => ['nullable', 'string', 'max:255'],
'*.is_active' => ['nullable', 'boolean'],
];
}
return [
'name' => ['required', 'string', 'max:100', $uniqueRule],
'description' => ['nullable', 'string', 'max:255'],
'is_active' => ['nullable', 'boolean'],
];
}
public function messages(): array
{
return [
'*.name.required' => 'El nombre es obligatorio.',
'*.name.string' => 'El nombre debe ser una cadena de texto.',
'*.name.max' => 'El nombre no debe exceder los 100 caracteres.',
'*.description.string' => 'La descripción debe ser una cadena de texto.',
'*.description.max' => 'La descripción no debe exceder los 255 caracteres.',
'name.required' => 'El nombre es obligatorio.',
'name.string' => 'El nombre debe ser una cadena de texto.',
'name.max' => 'El nombre no debe exceder los 100 caracteres.',
'description.string' => 'La descripción debe ser una cadena de texto.',
'description.max' => 'La descripción no debe exceder los 255 caracteres.',
];
}
/**
* Detecta si el payload es un arreglo de objetos
*/
public function isBulk(): bool
{
return is_array($this->all()) && array_is_list($this->all());
}
}