activity = Activity::query() ->find($this->activityId); } public function newMonitorActivity($activityId) { $this->activityId = $activityId; $this->hydrateActivity(); $this->isPollingActive = true; } public function polling() { $this->hydrateActivity(); $this->setStatus(ProcessStatus::IN_PROGRESS); $exit_code = data_get($this->activity, 'properties.exitCode'); if ($exit_code !== null) { if ($exit_code === 0) { $this->setStatus(ProcessStatus::FINISHED); } else { $this->setStatus(ProcessStatus::ERROR); } $this->isPollingActive = false; } } protected function setStatus($status) { $this->activity->properties = $this->activity->properties->merge([ 'status' => $status, ]); $this->activity->save(); } }