ApprovalFilter.php 970 B

123456789101112131415161718192021222324252627282930313233
  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->query['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_at", Auth::id()),
  24. default => $query->where("created_at", Auth::id())->orWhere("users", 'like', '%,'.Auth::id().',%'),
  25. };
  26. });
  27. }
  28. }