InhabitantClassificationRequest.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App\Http\Requests;
  3. use Illuminate\Foundation\Http\FormRequest;
  4. use Illuminate\Validation\Rule;
  5. class InhabitantClassificationRequest extends FormRequest
  6. {
  7. public function rules(): array
  8. {
  9. $id = $this->route('id');
  10. $rules = [
  11. 'description' => ['sometimes', 'string', 'max:150'],
  12. 'start' => ['sometimes', 'integer', 'min:1'],
  13. 'end' => ['sometimes', 'integer', 'min:1', 'gte:start'],
  14. 'tbr_percentage' => ['sometimes', 'numeric', 'min:0', 'max:1'],
  15. ];
  16. if ($this->isMethod('post')) {
  17. $rules['description'] = ['required', 'string', 'max:150'];
  18. $rules['start'] = ['required', 'integer', 'min:1'];
  19. $rules['end'] = ['required', 'integer', 'min:1', 'gte:start'];
  20. $rules['tbr_percentage'] = ['required', 'numeric', 'min:0', 'max:1'];
  21. }
  22. return $rules;
  23. }
  24. public function messages(): array
  25. {
  26. return [
  27. 'description.required' => 'A descrição é obrigatória.',
  28. 'start.required' => 'O mês de início é obrigatório.',
  29. 'end.required' => 'O mês de fim é obrigatório.',
  30. 'end.gte' => 'O mês de fim deve ser maior ou igual ao início.',
  31. 'tbr_percentage.required' => 'A porcentagem do TBR é obrigatória.',
  32. ];
  33. }
  34. protected function prepareForValidation()
  35. {
  36. if ($this->route('id')) {
  37. $model = \App\Models\InhabitantClassification::find($this->route('id'));
  38. if ($model) {
  39. $data = [];
  40. if (!$this->has('start')) {
  41. $data['start'] = $model->start;
  42. }
  43. if (!$this->has('end')) {
  44. $data['end'] = $model->end;
  45. }
  46. $this->merge($data);
  47. }
  48. }
  49. }
  50. }