FileObjectType.php 1.4 KB

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