'required', 'description' => 'required', 'schedule' => 'required', ]; } public function mount($model = null) { $this->hosts_available = Host::all()->pluck('hostname', 'id')->toArray(); $this->hosts_tasks_available = MaintenanceTask::all()->pluck('name', 'id')->toArray(); if (!empty($model)) { $maintenance = Maintenance::find($model); $this->model = $model; $this->name = $maintenance->name; $this->description = $maintenance->description; $this->schedule = $maintenance->schedule; $this->hosts = $maintenance->hosts()->pluck('hosts.id')->toArray(); foreach ($maintenance->tasks as $task) { $this->hosts_tasks_available[$task->host_id][] = $task->id; } $this->action = 'update'; } } public function store() { $validatedData = $this->validate(); $maintenance = Maintenance::create($validatedData); $hosts = Host::whereIn('id', $this->hosts)->get(); foreach ($hosts as $key => $host) { $maintenance->hosts()->attach($host); } $this->dispatch('closeModal'); } public function update() { $validatedData = $this->validate(); $maintenance = Maintenance::find($this->model); $maintenance->hosts()->whereNotIn('host_id', $this->hosts)->delete(); if (!empty($maintenance)) { $maintenance->update($validatedData); $hosts = Host::whereIn('id', $this->hosts)->whereNotIn('id', $maintenance->hosts()->pluck('hosts.id')->toArray())->get(); foreach ($hosts as $key => $host) { $maintenance->hosts()->attach($host); } $maintenance->refresh(); foreach ($maintenance->hosts as $host) { foreach ($this->hosts_tasks[$host->id] as $task_id => $host_task_name) { $host->tasks()->create([ 'task_id' => $task_id ]); } } } $this->dispatch('closeModal'); } public function render() { return view('livewire.maintenance.form'); } public function addHost() { $this->hosts[] = []; } public function removeHost($id) { unset($this->hosts[$id]); } }