57 lines
1.4 KiB
PHP
57 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace Bluesquare\Connect\Traits;
|
|
|
|
trait HasConnectSync
|
|
{
|
|
abstract function fill(array $attributes);
|
|
abstract function save();
|
|
abstract function delete();
|
|
|
|
protected $fillable = [];
|
|
|
|
public static $connectResource;
|
|
|
|
public static $connectColumnId = 'connect_resource_id';
|
|
|
|
public static function findConnectResource($id)
|
|
{
|
|
return self::query()->where(self::$connectColumnId, $id)->first();
|
|
}
|
|
|
|
public static function onConnectResourceCreated($id, $data)
|
|
{
|
|
$record = self::findConnectResource($id) ?? new self;
|
|
$attributes = $record->getConnectFillableAttributes();
|
|
|
|
foreach ($data as $key => $value) {
|
|
if (in_array($key, $attributes))
|
|
$record->$key = $value;
|
|
}
|
|
|
|
$record->{self::$connectColumnId} = $id;
|
|
return $record->save();
|
|
}
|
|
|
|
public static function onConnectResourceUpdated($id, $data)
|
|
{
|
|
return self::onConnectResourceCreated($id, $data);
|
|
}
|
|
|
|
public static function onConnectResourceDeleted($id, $data = null)
|
|
{
|
|
$record = self::findConnectResource($id);
|
|
return $record ? $record->forceDelete() : false;
|
|
}
|
|
|
|
public static function onConnectResourceDoesNotExist($record)
|
|
{
|
|
return $record->forceDelete();
|
|
}
|
|
|
|
public function getConnectFillableAttributes()
|
|
{
|
|
return $this->fillable;
|
|
}
|
|
}
|