FileObjectType.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. case CONTAINER = "container";
  18. public function modelBuilder(): \Illuminate\Database\Eloquent\Builder
  19. {
  20. return match ($this) {
  21. self::ASSET => Asset::query(),
  22. self::PROJECT => Project::query(),
  23. self::TASK => Task::query(),
  24. self::REQUIREMENT => Requirement::query(),
  25. self::ACTION => Action::query(),
  26. self::PLAN => Plan::query(),
  27. };
  28. }
  29. public function modelBuilderAllowed(string $id = null): \Illuminate\Database\Eloquent\Builder
  30. {
  31. return match ($this) {
  32. self::ASSET => Asset::query(),
  33. self::PROJECT => Project::query()->allowed($id),
  34. self::TASK => Task::query()->allowed($id),
  35. self::REQUIREMENT => Requirement::query(),
  36. self::ACTION => Action::query(),
  37. self::PLAN => Plan::query(),
  38. };
  39. }
  40. }