canOrAbort('create reward'); $this->form->store(); $this->dispatch('refreshDatatable'); $this->toast('Hadiah berhasil ditambahkan.'); Flux::modals()->close(); } public function update(): void { $this->canOrAbort('update reward'); if ($this->form->reward->redemptions()->exists()) { $this->toast('Hadiah tidak dapat diubah karena sudah ada penukaran.', 'error'); Flux::modals()->close(); return; } $this->form->update(); $this->dispatch('refreshDatatable'); $this->toast('Hadiah berhasil diperbarui.'); Flux::modals()->close(); } public function delete(RewardModel $reward): void { $this->canOrAbort('delete reward'); $reward->delete(); $this->dispatch('refreshDatatable'); $this->toast('Hadiah berhasil dihapus.'); Flux::modals()->close(); } #[On('modal:open')] public function openModal(string $method, string $modalTitle, ?string $id = null): void { $this->resetValidation(); $this->resetErrorBag(); $this->method = $method; $this->modalTitle = $modalTitle; $id && $this->form->setReward(RewardModel::byHashOrFail($id)); } public function render(): View { return view('livewire.studio.loyalty.rewards', [ 'pageTitle' => 'Hadiah', ]); } }