DepartmentCriteria.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 DepartmentCriteria.
  8. *
  9. * @package namespace App\Repositories\Criteria;
  10. */
  11. class DepartmentCriteria 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 ($name = $this->request->get('name')) {
  36. $model = $model->where('name', 'like', "%{$name}%");
  37. }
  38. if (($status = $this->request->get('status', false)) !== false) {
  39. $model = $model->where('status', '=', $status);
  40. }
  41. $model = $model->orderByDesc('sort')->orderByDesc('id');
  42. return $model;
  43. }
  44. }