FileObjectType.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace App\Models\Enums;
  3. use App\Models\Action;
  4. use App\Models\Asset;
  5. use App\Models\Plan;
  6. use App\Models\Project;
  7. use App\Models\Requirement;
  8. use App\Models\Task;
  9. enum FileObjectType: string
  10. {
  11. case ASSET ="asset";
  12. case PROJECT = "project";
  13. case REQUIREMENT="requirement";
  14. case TASK = "task";
  15. case ACTION = "action";
  16. case PLAN = "plan";
  17. public function modelBuilder(): \Illuminate\Database\Eloquent\Builder
  18. {
  19. return match ($this) {
  20. self::ASSET => Asset::query(),
  21. self::PROJECT => Project::query(),
  22. self::TASK => Task::query(),
  23. self::REQUIREMENT => Requirement::query(),
  24. self::ACTION => Action::query(),
  25. self::PLAN => Plan::query(),
  26. };
  27. }
  28. public function modelBuilderAllowed(string $id = null): \Illuminate\Database\Eloquent\Builder
  29. {
  30. return match ($this) {
  31. self::ASSET => Asset::query(),
  32. self::PROJECT => Project::query()->allowed($id),
  33. self::TASK => Task::query()->allowed($id),
  34. self::REQUIREMENT => Requirement::query(),
  35. self::ACTION => Action::query(),
  36. self::PLAN => Plan::query(),
  37. };
  38. }
  39. }