laravel-connect/src/Traits/HasConnectSync.php

55 lines
1.3 KiB
PHP
Raw Normal View History

2020-05-11 16:26:34 +02:00
<?php
namespace Bluesquare\Connect\Traits;
trait HasConnectSync
{
2020-05-11 17:54:18 +02:00
abstract function fill(array $attributes);
2020-05-11 16:26:34 +02:00
abstract function save();
abstract function delete();
public static $connectResource;
2020-05-13 12:38:26 +02:00
public static $connectColumnId = 'connect_resource_id';
public static function findConnectResource($id)
{
return self::query()->where(self::$connectColumnId, $id)->first();
}
2020-05-11 16:26:34 +02:00
public static function onConnectResourceCreated($id, $data)
{
2020-05-13 12:38:26 +02:00
$record = self::findConnectResource($id) ?? new self;
$attributes = $record->getConnectFillableAttributes();
foreach ($data as $key => $value) {
if (in_array($key, $attributes))
$record->$key = $value;
}
2020-05-13 12:38:26 +02:00
$record->{self::$connectColumnId} = $id;
return $record->save();
2020-05-11 16:26:34 +02:00
}
public static function onConnectResourceUpdated($id, $data)
{
2020-05-13 12:38:26 +02:00
return self::onConnectResourceCreated($id, $data);
2020-05-11 16:26:34 +02:00
}
2020-05-13 12:38:26 +02:00
public static function onConnectResourceDeleted($id, $data = null)
2020-05-11 16:26:34 +02:00
{
2020-05-13 12:38:26 +02:00
$record = self::findConnectResource($id);
return $record ? $record->forceDelete() : false;
2020-05-11 16:26:34 +02:00
}
2020-05-12 16:56:50 +02:00
public static function onConnectResourceDoesNotExist($record)
{
2020-05-13 12:38:26 +02:00
return $record->forceDelete();
2020-05-12 16:56:50 +02:00
}
public function getConnectFillableAttributes()
{
return $this->fillable;
}
2020-05-11 16:26:34 +02:00
}