ClassPackageRequest.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace App\Http\Requests;
  3. use App\Http\Requests\Concerns\ValidatesProposalPricing;
  4. use Illuminate\Contracts\Validation\Validator as ValidatorContract;
  5. use Illuminate\Foundation\Http\FormRequest;
  6. class ClassPackageRequest extends FormRequest
  7. {
  8. use ValidatesProposalPricing;
  9. public function rules(): array
  10. {
  11. $required = $this->isMethod('POST') ? 'required' : 'sometimes';
  12. return [
  13. 'name' => "$required|string|max:255",
  14. 'quantity_classes' => "$required|integer|min:1",
  15. 'contract_value' => 'nullable|numeric|min:0',
  16. 'contract_register_value' => 'nullable|numeric|min:0',
  17. 'contrat_discount_value' => 'nullable|numeric|min:0',
  18. 'class_duration_minutes' => "$required|integer|min:1|max:1440",
  19. // 'weekday' => 'nullable|integer|min:0|max:6|required_with:start_time',
  20. // 'start_time' => 'nullable|date_format:H:i|required_with:weekday',
  21. // 'second_weekday' => 'nullable|integer|min:0|max:6|different:weekday|required_with:second_start_time',
  22. // 'second_start_time' => 'nullable|date_format:H:i|required_with:second_weekday',
  23. 'materials' => 'nullable|array',
  24. 'materials.*.product_id' => 'required_with:materials|integer|exists:products,id',
  25. 'materials.*.quantity' => 'required_with:materials|integer|min:1',
  26. 'materials.*.price' => 'required_with:materials|numeric|min:0',
  27. 'group_ids' => 'nullable|array',
  28. 'group_ids.*' => 'integer|exists:groups,id',
  29. 'unit_visibilities' => 'nullable|array',
  30. 'unit_visibilities.*.unit_id' => 'required_with:unit_visibilities|integer|exists:units,id',
  31. 'unit_visibilities.*.visible' => 'required_with:unit_visibilities|boolean',
  32. ...$this->proposalPricingRules('pavao', $required),
  33. ...$this->proposalPricingRules('irrecusavel', $required, withCondition: true),
  34. ];
  35. }
  36. public function withValidator(ValidatorContract $validator): void
  37. {
  38. $this->validateProposalPricingSections($validator, ['pavao', 'irrecusavel']);
  39. }
  40. }