1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-03-22 13:14:03 +00:00

Add feature that allow to determine when model is syncable

This commit is contained in:
Leandro Guindani Gehlen 2022-07-04 16:03:03 -03:00
parent 51228defc6
commit 9155e32ba8
4 changed files with 80 additions and 7 deletions

View file

@ -15,4 +15,6 @@ interface Syncable
public function getSyncedAttributeNames(): array;
public function triggerSyncEvent();
public function isSyncEnabled();
}

View file

@ -14,15 +14,16 @@ trait ResourceSyncing
{
static::saved(function (Syncable $model) {
/** @var ResourceSyncing $model */
$model->triggerSyncEvent();
if ($model->isSyncEnabled()) {
$model->triggerSyncEvent();
}
});
static::creating(function (self $model) {
if (! $model->getAttribute($model->getGlobalIdentifierKeyName()) && app()->bound(UniqueIdentifierGenerator::class)) {
$model->setAttribute(
$model->getGlobalIdentifierKeyName(),
app(UniqueIdentifierGenerator::class)->generate($model)
);
$key = $model->getGlobalIdentifierKeyName();
if (! $model->getAttribute($key) && app()->bound(UniqueIdentifierGenerator::class) && $model->isSyncEnabled()) {
$model->setAttribute($key, app(UniqueIdentifierGenerator::class)->generate($model));
}
});
}
@ -32,4 +33,9 @@ trait ResourceSyncing
/** @var Syncable $this */
event(new SyncedResourceSaved($this, tenant()));
}
public function isSyncEnabled()
{
return true;
}
}

View file

@ -16,7 +16,7 @@ class TenantPivot extends Pivot
static::saved(function (self $pivot) {
$parent = $pivot->pivotParent;
if ($parent instanceof Syncable) {
if ($parent instanceof Syncable && $parent->isSyncEnabled()) {
$parent->triggerSyncEvent();
}
});