Viewing File: /home/markqprx/iniasli.pro/app-20260222054640/Actions/LinkGroup/CrupdateLinkGroup.php
<?php
namespace App\Actions\LinkGroup;
use App\Models\Biolink;
use App\Models\LinkGroup;
use Arr;
use Auth;
use Common\Tags\Tag;
class CrupdateLinkGroup
{
public function execute(
LinkGroup|Biolink $initialGroup,
array $data,
): LinkGroup|Biolink {
if (!$initialGroup->exists) {
$group = $initialGroup->create([
'name' => $data['name'],
'user_id' => Auth::id(),
'hash' => $data['hash'],
'clicks_count' => 0,
]);
} else {
$group = $initialGroup;
}
$attributes = [
'name' => $data['name'],
'description' => $data['description'] ?? null,
'expires_at' => $data['expires_at'] ?? null,
'activates_at' => $data['activates_at'] ?? null,
'active' => $data['active'] ?? true,
'hash' => $data['hash'],
'utm' => $data['utm'] ?? null,
'rotator' => $data['rotator'] ?? false,
'domain_id' => $data['domain_id'] ?? null, // can be 0
];
if (array_key_exists('image', $data)) {
$attributes['image'] = $data['image'] ?? null;
}
// restore group if user has removed expires_at date from expired link
if (is_null($attributes['expires_at'])) {
$attributes['deleted_at'] = null;
}
// make sure not to clear password if it was not changed
if (Arr::has($data, 'password')) {
$attributes['password'] = $data['password'] ?: null;
}
$group->fill($attributes)->save();
if (isset($data['rules'])) {
$group->rules()->delete();
$rules = $group->rules()->createMany(Arr::get($data, 'rules'));
$group->setRelation('rules', $rules);
}
if (Arr::get($data, 'exp_clicks_rule.key')) {
$group
->rules()
->updateOrCreate(
['type' => 'exp_clicks'],
$data['exp_clicks_rule'],
);
}
if (isset($data['tags'])) {
$tags = app(Tag::class)->insertOrRetrieve($data['tags'], Tag::DEFAULT_TYPE);
$group->tags()->sync($tags);
$group->setRelation('tags', $tags);
}
if (isset($data['pixels'])) {
$group->pixels()->sync(Arr::get($data, 'pixels'));
}
return $group;
}
}
Back to Directory
File Manager