| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- <?php
- namespace App\Http\Requests;
- use Illuminate\Foundation\Http\FormRequest;
- use Illuminate\Validation\Rule;
- class ClassPackageUnitVariationRequest extends FormRequest
- {
- public function rules(): array
- {
- $required = $this->isMethod('POST') ? 'required' : 'sometimes';
- return [
- // uma proposta de cada tipo por pacote da unidade
- 'type' => [
- $required,
- 'string',
- 'in:pavao,irrecusavel',
- Rule::unique('class_package_unit_variations')
- ->where('class_package_unit_id', $this->route('package'))
- ->ignore($this->route('id')),
- ],
- 'register_value' => "$required|numeric|min:0",
- 'register_installments_min' => "$required|integer|min:1|max:60",
- 'register_installments_max' => "$required|integer|min:1|max:60|gte:register_installments_min",
- 'package_value' => "$required|numeric|min:0",
- 'package_installments_min' => "$required|integer|min:1|max:60",
- 'package_installments_max' => "$required|integer|min:1|max:60|gte:package_installments_min",
- 'discount_value' => 'sometimes|nullable|numeric|min:0',
- 'material_installments_min' => "$required|integer|min:1|max:60",
- 'material_installments_max' => "$required|integer|min:1|max:60|gte:material_installments_min",
- // sem materials na criacao a proposta herda os materiais do pacote
- // o material_value e sempre a soma da lista, nunca vem na request
- 'materials' => 'sometimes|nullable|array',
- 'materials.*.product_id' => 'required_with:materials|integer|exists:products,id',
- 'materials.*.quantity' => 'required_with:materials|integer|min:1',
- 'materials.*.price' => 'required_with:materials|numeric|min:0',
- ];
- }
- }
|