FileObjectType.php 1.9 KB

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