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]); } }