Files
ABSDEV/Modules/Builder/Services/BuilderDocumentService.php
2026-07-24 14:59:44 +01:00

29 lines
985 B
PHP

<?php
namespace Modules\Builder\Services;
use Illuminate\Support\Facades\DB;
use Modules\Builder\Models\BuilderDocument;
final class BuilderDocumentService
{
public function save(BuilderDocument $document, array $payload, ?int $userId = null): BuilderDocument
{
return DB::transaction(function () use ($document, $payload, $userId) {
if ($document->exists && $document->isDirty()) {
$document->versions()->create(['version' => $document->version, 'document' => $document->getOriginal('document') ?: [], 'settings' => $document->getOriginal('settings') ?: [], 'created_by' => $userId]);
}
$document->fill($payload);
$document->updated_by = $userId;
if (! $document->exists) {
$document->created_by = $userId;
} else {
$document->version++;
}
$document->save();
return $document->refresh();
});
}
}