File: //home/xedaptot/iphim.naniguide.com/common/Channels/CrupdateChannel.php
<?php
namespace Common\Channels;
use App\Models\Channel;
use Illuminate\Support\Facades\Auth;
class CrupdateChannel
{
public function execute($params, Channel $initialChannel = null): Channel
{
// can either specify channel model or namespace from which to instantiate
if (!$initialChannel) {
$channel = app(Channel::class)->newInstance([
'user_id' => Auth::id(),
]);
} else {
$channel = $initialChannel;
}
$attributes = [
'name' => $params['name'],
'public' => $params['public'] ?? true,
'internal' => $params['internal'] ?? false,
'type' => $params['type'] ?? ($channel->type ?? 'channel'),
'description' => $params['description'] ?? null,
// merge old config so config that is not in crupdate channel form is not lost
'config' => array_merge(
$initialChannel['config'] ?? [],
$params['config'],
),
];
if ($attributes['type'] !== 'list') {
$attributes['slug'] = $params['slug'] ?? slugify($params['name']);
}
$channel
->fill(
array_merge($attributes, [
// make sure updated_at is always changed, event if model is
// not dirty otherwise channel cache will not be cleared
'updated_at' => now(),
]),
)
->save();
return $channel;
}
}