|
@@ -29,4 +29,31 @@ class FileService
|
|
|
|
|
|
$file->save();
|
|
|
}
|
|
|
+
|
|
|
+ public function setLatestVersion(string $id): void
|
|
|
+ {
|
|
|
+ $file = File::query()->findOrFail($id);
|
|
|
+ if ($file->is_latest_version) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ $file->is_latest_version = true;
|
|
|
+
|
|
|
+ $oldLatestVersionFile = File::query()
|
|
|
+ ->where(fn($query) => $file->source_file_id ? $query->where('id', $file->source_file_id) : $query->where('source_file_id', $file->id))
|
|
|
+ ->where('is_latest_version', true)
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ if ($oldLatestVersionFile) {
|
|
|
+ $oldLatestVersionFile->is_latest_version = false;
|
|
|
+ $changes = ModelChangeDetector::detector(ActionObjectType::CONTAINER_FILE, $oldLatestVersionFile);
|
|
|
+ ActionRepository::create($oldLatestVersionFile->id, ActionObjectType::CONTAINER_FILE, ObjectAction::EDITED_FILE, null, null, [], $changes);
|
|
|
+
|
|
|
+ $oldLatestVersionFile->save();
|
|
|
+ }
|
|
|
+
|
|
|
+ $changes = ModelChangeDetector::detector(ActionObjectType::CONTAINER_FILE, $file);
|
|
|
+ ActionRepository::create($id, ActionObjectType::CONTAINER_FILE, ObjectAction::EDITED_FILE, null, null, [], $changes);
|
|
|
+
|
|
|
+ $file->save();
|
|
|
+ }
|
|
|
}
|