ReviewImprovementRequest.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Http\Requests;
  3. use Illuminate\Foundation\Http\FormRequest;
  4. use Illuminate\Validation\Rule;
  5. class ReviewImprovementRequest extends FormRequest
  6. {
  7. public function authorize(): bool
  8. {
  9. return true;
  10. }
  11. public function rules(): array
  12. {
  13. $itemId = $this->route('id');
  14. $reviewId = $this->input('review_id');
  15. $rules = [
  16. 'review_id' => ['sometimes', 'integer', 'exists:reviews,id'],
  17. 'improvement_type_id' => ['sometimes', 'integer', 'exists:improvement_types,id'],
  18. ];
  19. if ($this->isMethod('POST')) {
  20. $rules['review_id'] = ['required', 'integer', 'exists:reviews,id'];
  21. $rules['improvement_type_id'] = [
  22. 'required',
  23. 'integer',
  24. 'exists:improvement_types,id',
  25. Rule::unique('reviews_improvements', 'improvement_type_id')
  26. ->where('review_id', $reviewId)
  27. ->whereNull('deleted_at')
  28. ->ignore($itemId),
  29. ];
  30. }
  31. return $rules;
  32. }
  33. public function messages(): array
  34. {
  35. return [
  36. 'improvement_type_id.unique' => __('validation.review_improvement.already_exists'),
  37. ];
  38. }
  39. }