CardCriteria.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Repositories\Criteria;
  3. use App\Models\Role;
  4. use App\Repositories\Enums\ModelStatusEnum;
  5. use Illuminate\Http\Request;
  6. use Prettus\Repository\Contracts\CriteriaInterface;
  7. use Prettus\Repository\Contracts\RepositoryInterface;
  8. class CardCriteria extends RequestCriteria implements CriteriaInterface
  9. {
  10. /**
  11. * @var \Illuminate\Http\Request
  12. */
  13. protected $request;
  14. public function __construct(Request $request)
  15. {
  16. $this->request = $request;
  17. }
  18. /**
  19. * @inheritDoc
  20. */
  21. public function apply($model, RepositoryInterface $repository)
  22. {
  23. if ($this->request->filled('shop_id')) {
  24. $shop_id = $this->request->get('shop_id');
  25. $model = $model->where('shop_id', 'in', [$shop_id, 0]);
  26. }
  27. if ($this->request->filled('status')) {
  28. $model = $model->where('status', $this->request->get('status'));
  29. }
  30. if (login_user_id()) {
  31. $model = $model->where('valid_time', '>=', now())->where('status', ModelStatusEnum::OK);
  32. }
  33. $model = $model->orderBy("id", 'desc');
  34. return parent::apply($model, $repository);
  35. }
  36. }