'required|string|max:255', 'selectedUsers' => 'array', ]; public function render() { $dishes = Dish::with('users') ->orderBy('name') ->paginate(10); $users = User::where('planner_id', auth()->id()) ->orderBy('name') ->get(); return view('livewire.dishes.dishes-list', [ 'dishes' => $dishes, 'users' => $users, ]); } public function create() { $this->reset(['name', 'selectedUsers']); $this->resetValidation(); $this->showCreateModal = true; } public function store() { $this->validate(); $dish = Dish::create([ 'name' => $this->name, 'planner_id' => auth()->id(), ]); // Attach selected users if (! empty($this->selectedUsers)) { $dish->users()->attach($this->selectedUsers); } $this->showCreateModal = false; $this->reset(['name', 'selectedUsers']); session()->flash('success', 'Dish created successfully.'); } public function edit(Dish $dish) { $this->editingDish = $dish; $this->name = $dish->name; $this->selectedUsers = $dish->users->pluck('id')->toArray(); $this->resetValidation(); $this->showEditModal = true; } public function update() { $this->validate(); $this->editingDish->update([ 'name' => $this->name, ]); // Sync users $this->editingDish->users()->sync($this->selectedUsers); $this->showEditModal = false; $this->reset(['name', 'selectedUsers', 'editingDish']); session()->flash('success', 'Dish updated successfully.'); } public function confirmDelete(Dish $dish) { $this->deletingDish = $dish; $this->showDeleteModal = true; } public function delete() { $this->deletingDish->users()->detach(); $this->deletingDish->delete(); $this->showDeleteModal = false; $this->deletingDish = null; session()->flash('success', 'Dish deleted successfully.'); } public function cancel() { $this->showCreateModal = false; $this->showEditModal = false; $this->showDeleteModal = false; $this->reset(['name', 'selectedUsers', 'editingDish', 'deletingDish']); } public function toggleAllUsers(): void { $users = User::where('planner_id', auth()->id())->get(); if (count($this->selectedUsers) === $users->count()) { $this->selectedUsers = []; } else { $this->selectedUsers = $users->pluck('id')->map(fn ($id) => (string) $id)->toArray(); } } }