Builder administration area
* Page builder foundation * Form builder document type * Dashboard builder document type * Report builder document type * Menu builder document type * Email builder document type * Query builder document type * Workflow builder document type * Reusable component registry * Form-field registry * Dashboard-widget registry * Hero, heading, and rich-content components * JSON document schema * Saved builder documents * Draft, published, and archived states * Document version history * Reusable builder templates * Component rendering service * Extensible BuilderComponent contract * Authenticated Builder REST endpoints * Administration navigation * Builder permissions * Module registration and test
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
<?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();
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user