* 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
17 lines
841 B
PHP
17 lines
841 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();
|
|
});
|
|
}
|
|
}
|