DocumentController.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Enums\ActionObjectType;
  5. use App\Services\Folder\FoldersService;
  6. use Illuminate\Http\JsonResponse;
  7. class DocumentController extends Controller
  8. {
  9. public function pathInfo(string $objectType, string $objectId): JsonResponse
  10. {
  11. $data = [
  12. 'type' => null,
  13. 'asset_id' => null,
  14. 'project_id' => null,
  15. 'library_id' => null,
  16. 'container_id' => null,
  17. 'folder' => null,
  18. 'object_id' => intval($objectId),
  19. 'object_type' => $objectType,
  20. ];
  21. $model = ActionObjectType::from($objectType)->modelBuilder()->findOrFail($objectId);
  22. switch ($objectType) {
  23. case ActionObjectType::CONTAINER_FILE->value:
  24. $data['folder'] = (new FoldersService())->getAllParentTree($model->folder_id);
  25. $data['container_id'] = $model->container?->id;
  26. $data['library_id'] = $model->library?->id;
  27. $data['asset_id'] = $model->library?->asset_id;
  28. $data['project_id'] = $model->library?->project_id;
  29. $data['type'] = $model->library?->type;
  30. break;
  31. case ActionObjectType::FOLDER->value:
  32. $data['folder'] = (new FoldersService())->getAllParentTree($model->id);
  33. $data['container_id'] = $model->container?->id;
  34. $data['library_id'] = $model->library?->id;
  35. $data['asset_id'] = $model->library?->asset_id;
  36. $data['project_id'] = $model->library?->project_id;
  37. $data['type'] = $model->library?->type;
  38. break;
  39. case ActionObjectType::CONTAINER->value:
  40. $data['container_id'] = $model->id;
  41. $data['library_id'] = $model->library?->id;
  42. $data['asset_id'] = $model->library?->asset_id;
  43. $data['project_id'] = $model->library?->project_id;
  44. $data['type'] = $model->library?->type;
  45. break;
  46. case ActionObjectType::LIBRARY->value:
  47. $data['library_id'] = $model->id;
  48. $data['asset_id'] = $model->asset_id;
  49. $data['project_id'] = $model->project_id;
  50. $data['type'] = $model->type;
  51. default:
  52. break;
  53. }
  54. return $this->success(['data' => $data]);
  55. }
  56. }