|
@@ -67,23 +67,9 @@ trait FilesUploadTrait
|
|
|
return $filesSize;
|
|
|
}
|
|
|
|
|
|
- protected function returnUploadResult(string $extension, string $fileName, string $path = '', int $size = 0, Request $request)
|
|
|
+ protected function buildFileArr(string $extension, string $fileName, string $path = '', int $size = 0, Request $request)
|
|
|
{
|
|
|
- $modelType = $request->input('model_type', '');
|
|
|
-
|
|
|
- if ($this->isBIM($extension) || $modelType == 'osgb' && $request->object_type == FileObjectType::CONTAINER->value) {
|
|
|
- $bimFileBO = new BimFileBO($extension, $fileName, $modelType);
|
|
|
- if (!empty($path)) {
|
|
|
- $bimFileBO->modelDownloadUrl = Storage::url($path);
|
|
|
- }
|
|
|
- $bimFileBO->setConfigJson($request->input('configJson', []));
|
|
|
-
|
|
|
- $bimFileBO->setPointCloudConfigJson($request->input('pointCloudConfigJson', []));
|
|
|
-
|
|
|
- $data['bim'] = BIMFactory::make()->uploadFile($file ?? null, $bimFileBO);
|
|
|
- }
|
|
|
-
|
|
|
- $data['file'] = [
|
|
|
+ return [
|
|
|
'pathname' => $path,
|
|
|
'title' => $fileName,
|
|
|
'size' => $size,
|
|
@@ -95,17 +81,25 @@ trait FilesUploadTrait
|
|
|
'source' => $request->get("source", 1),
|
|
|
'uuid' => $request->get("uuid"),
|
|
|
'folder_id' => $request->get("folder_id", 0),
|
|
|
- 'is_bim' => isset($data['bim']) ? 1 : 0,
|
|
|
];
|
|
|
-
|
|
|
- return $data;
|
|
|
}
|
|
|
|
|
|
protected function uploadFileWithPath(Request $request, string $path, string $fileName, int $size = 0)
|
|
|
{
|
|
|
$extension = pathinfo($path, PATHINFO_EXTENSION);
|
|
|
|
|
|
- return $this->returnUploadResult($extension, $fileName, $path, $size, $request);
|
|
|
+ $gisType = $request->input('gis_type', '');
|
|
|
+
|
|
|
+ $fileArr = $this->buildFileArr($extension, $fileName, $path, $size, $request);
|
|
|
+ $fileArr['is_bim'] = 0;
|
|
|
+
|
|
|
+ if ($this->isBIM($extension) || $gisType == 'osgb' && $request->object_type == FileObjectType::CONTAINER->value) {
|
|
|
+ $fileArr['is_bim'] = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ $uploadedFile = $this->storeFile($fileArr);
|
|
|
+
|
|
|
+ return $uploadedFile;
|
|
|
}
|
|
|
|
|
|
protected function uploadFile(Request $request, UploadedFile $file, ?ProgressBar $progressBar = null): array
|
|
@@ -125,10 +119,10 @@ trait FilesUploadTrait
|
|
|
'bim' => [],
|
|
|
];
|
|
|
|
|
|
- $modelType = $request->input('model_type', '');
|
|
|
+ $gisType = $request->input('gis_type', '');
|
|
|
|
|
|
- if ($this->isBIM($extension) || $modelType == 'osgb' && $request->object_type == FileObjectType::CONTAINER->value) {
|
|
|
- $bimFileBO = new BimFileBO($extension, $file->getClientOriginalName(), $modelType);
|
|
|
+ if ($this->isBIM($extension) || $gisType == 'osgb' && $request->object_type == FileObjectType::CONTAINER->value) {
|
|
|
+ $bimFileBO = new BimFileBO($extension, $file->getClientOriginalName(), Auth::user()->name, $gisType);
|
|
|
$bimFileBO->setPointCloudConfigJson($request->input('pointCloudConfigJson', []));
|
|
|
|
|
|
$data['bim'] = BIMFactory::make()->uploadFile($file, $bimFileBO);
|
|
@@ -151,6 +145,36 @@ trait FilesUploadTrait
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
+ protected function storeFile(array $fileArr): File
|
|
|
+ {
|
|
|
+ if ($fileArr['object_id'] && $fileArr['source'] == 1 || $fileArr['uuid'] && $fileArr['source'] == 1) {
|
|
|
+ $version = File::query()
|
|
|
+ ->where('object_type', $fileArr['object_type'])
|
|
|
+ ->where('object_id', $fileArr['object_id'])
|
|
|
+ ->where("title", $fileArr['title'])
|
|
|
+ ->where("source", 1)
|
|
|
+ ->where("folder_id", $fileArr['folder_id'] ?? 0)
|
|
|
+ ->count();
|
|
|
+ $fileArr['version'] = $version + 1;
|
|
|
+ $fileArr['is_latest_version'] = 1;
|
|
|
+
|
|
|
+ File::query()
|
|
|
+ ->where('object_type', $fileArr['object_type'])
|
|
|
+ ->where('object_id', $fileArr['object_id'])
|
|
|
+ ->where("title", $fileArr['title'])
|
|
|
+ ->where("folder_id", $fileArr['folder_id'] ?? 0)
|
|
|
+ ->where("source", 1)
|
|
|
+ ->where("is_latest_version", 1)
|
|
|
+ ->update([
|
|
|
+ 'is_latest_version' => 0
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $file = File::query()->create($fileArr);
|
|
|
+
|
|
|
+ return $file;
|
|
|
+ }
|
|
|
+
|
|
|
protected function storeFiles(array $items)
|
|
|
{
|
|
|
$uploadedFiles = [];
|