validate([ 'title' => ['required', 'string', 'max:255'], 'content' => ['required', 'string', 'max:12000'], 'isActive' => ['boolean'], ]); $service->create($this->title, $this->content, $this->isActive); $this->reset(['title', 'content']); $this->isActive = true; session()->flash('success', 'Snelantwoord opgeslagen.'); $this->resetPage(); } public function updateQuickReply(int $id, AdminQuickReplyService $service): void { $this->validate([ "editRows.{$id}.title" => ['required', 'string', 'max:255'], "editRows.{$id}.content" => ['required', 'string', 'max:12000'], "editRows.{$id}.is_active" => ['boolean'], ]); $row = $this->editRows[$id] ?? []; $updated = $service->update( $id, (string) ($row['title'] ?? ''), (string) ($row['content'] ?? ''), (bool) ($row['is_active'] ?? false) ); session()->flash('success', $updated ? "Snelantwoord #{$id} is opgeslagen." : "Snelantwoord #{$id} bestaat niet meer."); } public function deleteQuickReply(int $id, AdminQuickReplyService $service): void { $deleted = $service->deleteById($id); session()->flash('success', $deleted ? "Snelantwoord #{$id} is verwijderd." : "Snelantwoord #{$id} bestond niet meer."); unset($this->editRows[$id]); $this->resetPage(); } public function render(AdminQuickReplyService $service) { $quickReplies = $service->paginate(10); $this->hydrateEditRows($quickReplies->items()); return view('livewire.admin.quick-reply-manager', [ 'quickReplies' => $quickReplies, ]); } private function hydrateEditRows(array $quickReplies): void { foreach ($quickReplies as $quickReply) { if (array_key_exists($quickReply->id, $this->editRows)) { continue; } $this->editRows[$quickReply->id] = [ 'title' => $quickReply->title, 'content' => $quickReply->content, 'is_active' => $quickReply->is_active, ]; } } }