CategoryCriteria.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace App\Repositories\Criteria\Base;
  3. use Illuminate\Http\Request;
  4. use Prettus\Repository\Contracts\CriteriaInterface;
  5. use Prettus\Repository\Contracts\RepositoryInterface;
  6. /**
  7. * Class CourseCategoryCriteria.
  8. *
  9. * @package namespace App\Repositories\Criteria;
  10. */
  11. class CategoryCriteria implements CriteriaInterface
  12. {
  13. /**
  14. * @var \Illuminate\Http\Request
  15. */
  16. protected $request;
  17. public function __construct(Request $request = null)
  18. {
  19. if (is_null($request)) {
  20. $this->request = \request();
  21. } else {
  22. $this->request = $request;
  23. }
  24. }
  25. /**
  26. * Apply criteria in query repository
  27. *
  28. * @param string $model
  29. * @param RepositoryInterface $repository
  30. *
  31. * @return mixed
  32. */
  33. public function apply($model, RepositoryInterface $repository)
  34. {
  35. if ($this->request->filled('name')) {
  36. $name = $this->request->get('name');
  37. $model = $model->where('name', 'like', "%{$name}%");
  38. }
  39. if ($this->request->filled('status')) {
  40. $status = $this->request->get('status', false);
  41. $model = $model->where('status', '=', $status);
  42. }
  43. if ($this->request->filled('category_id')) {
  44. $category_id = $this->request->get('category_id');
  45. $model = $model->where('category_id', '=', $category_id);
  46. }
  47. if (!$this->request->filled('orderBy')) {
  48. $model = $model->orderByDesc('sort')->orderByDesc('id');
  49. }
  50. return $model;
  51. }
  52. }