| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <?php
- namespace App\Http\Requests;
- use Illuminate\Foundation\Http\FormRequest;
- class ClassPackageUnitRequest extends FormRequest
- {
- public function rules(): array
- {
- $required = $this->isMethod('POST') ? 'required' : 'sometimes';
- return [
- 'name' => "$required|string|max:255",
- 'quantity_classes' => "$required|integer|min:1",
- 'visible' => 'sometimes|boolean',
- 'class_duration_minutes' => "$required|integer|min:1|max:1440",
- // 'weekday' => 'nullable|integer|min:0|max:6|required_with:start_time',
- // 'start_time' => 'nullable|date_format:H:i|required_with:weekday',
- // 'second_weekday' => 'nullable|integer|min:0|max:6|different:weekday|required_with:second_start_time',
- // 'second_start_time' => 'nullable|date_format:H:i|required_with:second_weekday',
- 'materials' => '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',
- // propostas comerciais (pavao e irrecusavel), uma de cada tipo
- // sem materials a proposta herda os materiais do pacote da unidade
- // o material_value da proposta e sempre a soma da lista dela
- 'variations' => 'nullable|array',
- 'variations.*.type' => 'required_with:variations|string|in:pavao,irrecusavel|distinct',
- 'variations.*.register_value' => 'required_with:variations|numeric|min:0',
- 'variations.*.register_installments_min' => 'required_with:variations|integer|min:1|max:60',
- 'variations.*.register_installments_max' => 'required_with:variations|integer|min:1|max:60|gte:variations.*.register_installments_min',
- 'variations.*.package_value' => 'required_with:variations|numeric|min:0',
- 'variations.*.package_installments_min' => 'required_with:variations|integer|min:1|max:60',
- 'variations.*.package_installments_max' => 'required_with:variations|integer|min:1|max:60|gte:variations.*.package_installments_min',
- 'variations.*.discount_value' => 'nullable|numeric|min:0',
- 'variations.*.material_installments_min' => 'required_with:variations|integer|min:1|max:60',
- 'variations.*.material_installments_max' => 'required_with:variations|integer|min:1|max:60|gte:variations.*.material_installments_min',
- 'variations.*.materials' => 'nullable|array',
- 'variations.*.materials.*.product_id' => 'required_with:variations.*.materials|integer|exists:products,id',
- 'variations.*.materials.*.quantity' => 'required_with:variations.*.materials|integer|min:1',
- 'variations.*.materials.*.price' => 'required_with:variations.*.materials|numeric|min:0',
- ];
- }
- }
|