ClassPackageUnitVariationRequest.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace App\Http\Requests;
  3. use Illuminate\Foundation\Http\FormRequest;
  4. use Illuminate\Validation\Rule;
  5. class ClassPackageUnitVariationRequest extends FormRequest
  6. {
  7. public function rules(): array
  8. {
  9. $required = $this->isMethod('POST') ? 'required' : 'sometimes';
  10. return [
  11. // uma proposta de cada tipo por pacote da unidade
  12. 'type' => [
  13. $required,
  14. 'string',
  15. 'in:pavao,irrecusavel',
  16. Rule::unique('class_package_unit_variations')
  17. ->where('class_package_unit_id', $this->route('package'))
  18. ->ignore($this->route('id')),
  19. ],
  20. 'register_value' => "$required|numeric|min:0",
  21. 'register_installments_min' => "$required|integer|min:1|max:60",
  22. 'register_installments_max' => "$required|integer|min:1|max:60|gte:register_installments_min",
  23. 'package_value' => "$required|numeric|min:0",
  24. 'package_installments_min' => "$required|integer|min:1|max:60",
  25. 'package_installments_max' => "$required|integer|min:1|max:60|gte:package_installments_min",
  26. 'discount_value' => 'sometimes|nullable|numeric|min:0',
  27. 'material_installments_min' => "$required|integer|min:1|max:60",
  28. 'material_installments_max' => "$required|integer|min:1|max:60|gte:material_installments_min",
  29. // sem materials na criacao a proposta herda os materiais do pacote
  30. // o material_value e sempre a soma da lista, nunca vem na request
  31. 'materials' => 'sometimes|nullable|array',
  32. 'materials.*.product_id' => 'required_with:materials|integer|exists:products,id',
  33. 'materials.*.quantity' => 'required_with:materials|integer|min:1',
  34. 'materials.*.price' => 'required_with:materials|numeric|min:0',
  35. ];
  36. }
  37. }