feat(broadcast): menambahkan kolom baru yaitu link dan menyesuaikan logikanya

This commit is contained in:
Yoga Pangestu 2025-12-18 15:27:07 +07:00
parent b7c32d2ffb
commit 22af59f641
5 changed files with 15 additions and 13 deletions

View File

@ -37,6 +37,8 @@ public function columns(): array
</div>', ['value' => $value]))
->flexRow(['class' => 'gap-2 flex-wrap']),
Column::make('Tautan', 'link')->searchable(),
Column::make('Aksi')
->label(function ($row) {
return view('components.actions.table.delete', [

View File

@ -18,6 +18,8 @@ class BroadcastForm extends Form
public string $body = '';
public ?string $link = null;
public array $role_ids = [];
public function rules(): array
@ -25,6 +27,7 @@ public function rules(): array
return [
'title' => ['required', 'string', 'max:30'],
'body' => ['required', 'string', 'max:50'],
'link' => ['nullable', 'url', 'max:50'],
'role_ids' => ['required', 'array', 'min:1'],
'role_ids.*' => Rule::exists('roles', 'id'),
];
@ -34,6 +37,7 @@ public function validationAttributes(): array
{
return [
'title' => 'judul',
'link' => 'tautan',
'role_ids' => 'audiensi',
'role_ids.*' => 'audiensi',
];
@ -45,6 +49,7 @@ public function setBroadcast(Broadcast $broadcast): void
$this->title = $broadcast->title;
$this->body = $broadcast->body;
$this->link = $broadcast->link;
$this->role_ids = $broadcast->audiences->pluck('id')->toArray();
}
@ -57,6 +62,7 @@ public function store(): array
'user_id' => auth()->id(),
'title' => $this->title,
'body' => $this->body,
'link' => $this->link,
]);
$broadcast->audiences()->attach($this->role_ids);
@ -65,20 +71,8 @@ public function store(): array
return [
'title' => $broadcast->title,
'body' => $broadcast->body,
'link' => $broadcast->link,
'audience_ids' => $this->role_ids,
];
}
public function update(): void
{
$this->validate();
DB::transaction(function () {
$this->broadcast->update([
'title' => $this->title,
]);
$this->broadcast->audiences()->sync($this->role_ids);
});
}
}

View File

@ -60,6 +60,7 @@ public function create(): void
[
'title' => $result['title'],
'body' => $result['body'],
'url' => $result['link'],
],
);

View File

@ -16,6 +16,7 @@ public function up(): void
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->string('title', 30);
$table->string('body', 50);
$table->string('link', 50)->nullable();
$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->nullable()->useCurrentOnUpdate();
});

View File

@ -45,6 +45,10 @@
<flux:error name="form.body" />
</flux:field>
<flux:input label="Tautan"
placeholder="https://yadiparfum.com/articles"
wire:model="form.link" autocomplete="off" />
<flux:field>
<flux:label>Audiensi <span class="text-red-500 ms-1">*</span></flux:label>
<flux:select variant="listbox" multiple searchable placeholder="Pilih Audiensi"