TaskFilter.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace App\ModelFilters;
  3. use EloquentFilter\ModelFilter;
  4. use Illuminate\Support\Facades\Auth;
  5. class TaskFilter extends ModelFilter
  6. {
  7. /**
  8. * Related Models that have ModelFilters as well as the method on the ModelFilter
  9. * As [relationMethod => [input_key1, input_key2]].
  10. *
  11. * @var array
  12. */
  13. public $relations = [];
  14. public function project(string $project): TaskFilter
  15. {
  16. return $this->where("tasks.project_id", $project);
  17. }
  18. public function status(string $status): TaskFilter
  19. {
  20. return $this->where("status", $status);
  21. }
  22. public function asset(string $asset): TaskFilter
  23. {
  24. return $this->where("asset_id", $asset);
  25. }
  26. public function requirementGroup(string $group): TaskFilter
  27. {
  28. return $this->where("requirement_group_id", $group);
  29. }
  30. public function my(string $my): TaskFilter
  31. {
  32. return $my == "yes" ? $this->where("assign", Auth::id()) : $this;
  33. }
  34. public function linkRequirement($link): TaskFilter
  35. {
  36. return match($link) {
  37. "yes" => $this->where("requirement_id", ">", 0),
  38. "no" => $this->where("requirement_id", "=", 0),
  39. default => $this,
  40. };
  41. }
  42. }