12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- namespace App\Http\Controllers\API;
- use App\Http\Controllers\Controller;
- use App\Models\Asset;
- use App\Models\Enums\ActionObjectType;
- use App\Models\Project;
- use App\Services\Folder\FoldersService;
- use Illuminate\Http\JsonResponse;
- class DocumentController extends Controller
- {
- public function pathInfo(string $objectType, string $objectId): JsonResponse
- {
- $data = [
- 'type' => null,
- 'asset_id' => null,
- 'asset_name' => null,
- 'project_id' => null,
- 'project_name' => null,
- 'library_id' => null,
- 'library_name' => null,
- 'container_id' => null,
- 'container_name' => null,
- 'folder' => null,
- 'object_id' => intval($objectId),
- 'object_type' => $objectType,
- 'object_name' => '',
- ];
- $modelEnum = ActionObjectType::from($objectType);
- $model = $modelEnum->modelBuilder()->findOrFail($objectId);
- $data['object_name'] = $model->{$modelEnum->nameField()};
- switch ($objectType) {
- case ActionObjectType::CONTAINER_FILE->value:
- $data['folder'] = (new FoldersService())->getAllParentTree($model->folder_id);
- $data['container_id'] = $model->container?->id;
- $data['container_name'] = $model->container?->name;
- $data['library_id'] = $model->library?->id;
- $data['library_name'] = $model->library?->name;
- $data['asset_id'] = $model->library?->asset_id;
- $data['project_id'] = $model->library?->project_id;
- $data['type'] = $model->library?->type;
- break;
- case ActionObjectType::FOLDER->value:
- $data['folder'] = (new FoldersService())->getAllParentTree($model->id);
- $data['container_id'] = $model->container?->id;
- $data['container_name'] = $model->container?->name;
- $data['library_id'] = $model->library?->id;
- $data['library_name'] = $model->library?->name;
- $data['asset_id'] = $model->library?->asset_id;
- $data['project_id'] = $model->library?->project_id;
- $data['type'] = $model->library?->type;
- break;
- case ActionObjectType::CONTAINER->value:
- $data['container_id'] = $model->id;
- $data['container_name'] = $model->name;
- $data['library_id'] = $model->library?->id;
- $data['library_name'] = $model->library?->name;
- $data['asset_id'] = $model->library?->asset_id;
- $data['project_id'] = $model->library?->project_id;
- $data['type'] = $model->library?->type;
- break;
- case ActionObjectType::LIBRARY->value:
- $data['library_id'] = $model->id;
- $data['library_name'] = $model->name;
- $data['asset_id'] = $model->asset_id;
- $data['project_id'] = $model->project_id;
- $data['type'] = $model->type;
- break;
- case ActionObjectType::PROJECT->value:
- $data['project_id'] = $model->id;
- $data['project_name'] = $model->name;
- break;
- case ActionObjectType::ASSET->value:
- $data['asset_id'] = $model->id;
- $data['asset_name'] = $model->name;
- break;
- default:
- break;
- }
- if ($data['asset_id'] && ! $data['asset_name']) {
- $data['asset_name'] = Asset::query()->findOrFail($data['asset_id'])->name;
- }
- if ($data['project_id'] && ! $data['project_name']) {
- $data['project_name'] = Project::query()->findOrFail($data['project_id'])->name;
- }
- return $this->success(['data' => $data]);
- }
- }
|