ApprovalFilter.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. namespace App\ModelFilters;
  3. use App\Models\Enums\ObjectApprovalStatus;
  4. use Carbon\Carbon;
  5. use EloquentFilter\ModelFilter;
  6. use Illuminate\Support\Facades\Auth;
  7. class ApprovalFilter extends ModelFilter
  8. {
  9. /**
  10. * Related Models that have ModelFilters as well as the method on the ModelFilter
  11. * As [relationMethod => [input_key1, input_key2]].
  12. *
  13. * @var array
  14. */
  15. public $relations = [];
  16. public function setup()
  17. {
  18. $tab = $this->input['tab'] ?? null;
  19. $this->where(function ($query) use ($tab) {
  20. return match ($tab) {
  21. 'wait_for_me' => $query->where("users", 'like', '%,'.Auth::id().',%')->where("status", ObjectApprovalStatus::DOING),
  22. 'approved' => $query,
  23. 'pr' => $query->where("created_by", Auth::id()),
  24. default => $query->where("created_by", Auth::id())->orWhere("users", 'like', '%,'.Auth::id().',%'),
  25. };
  26. });
  27. }
  28. public function type($type): ModelFilter
  29. {
  30. return $this->where('object_type',$type);
  31. }
  32. }