runs = new ArrayCollection(); } /** * @return int|null */ public function getId(): ?int { return $this->id; } /** * @param int|null $id * @return Job */ public function setId(?int $id): Job { $this->id = $id; return $this; } /** * @return string */ public function getName(): string { return $this->name; } /** * @param string $name * @return Job */ public function setName(string $name): Job { $this->name = $name; return $this; } public function getData(?string $name = ''): mixed { $data = json_decode($this->data, true); if(!empty($name)) { $names = explode('.', $name); foreach($names as $item) { if(!isset($data[$item])) { return NULL; } $data = $data[$item]; } } return $data; } public function setData(array $data): Job { $this->data = json_encode($data); return $this; } public function addData(string $name, mixed $value): mixed { $data = json_decode($this->data, true); if (!empty($name)) { $this->addDataItem($data, $name, $value); } $this->data = json_encode($data); return $this; } private function addDataItem(array &$data, array|string $name, mixed $value): bool { $names = is_array($name) ? $name : explode('.', $name); $current = $names[0]; if(isset($data[$current]) && is_array($data[$current])) { unset($names[0]); $this->addDataItem($data[$current], array_values($names), $value); } else { $data[$names[0]] = $value; } return true; } public function removeData(?string $name = ''): mixed { $data = json_decode($this->data, true); if (!empty($name)) { $this->removeDataItem($data, $name); } return $this; } private function removeDataItem(array &$data, array|string $name): bool { $names = is_array($name) ? $name : explode('.', $name); $current = $names[0]; if(is_array($data[$current])) { unset($names[0]); $this->removeDataItem($data[$current], array_values($names)); } elseif(!isset($data[$current])) { return false; } else { unset($names[0]); } return true; } public function hasData($name): bool { return !empty($this->getData($name)); } /** * @return int */ public function getInterval(): int { return $this->interval; } /** * @param int $interval * @return Job */ public function setInterval(int $interval): Job { $this->interval = $interval; return $this; } /** * @return int */ public function getNextrun(): int { return $this->nextrun; } /** * @param int $nextrun * @return Job */ public function setNextrun(int $nextrun): Job { $this->nextrun = $nextrun; return $this; } /** * @return int */ public function getLastrun(): ?int { return $this->lastrun; } /** * @param int $lastrun * @return Job */ public function setLastrun(int $lastrun): Job { $this->lastrun = $lastrun; return $this; } /** * @return int */ public function getRunning(): int { return $this->running; } /** * @param int $running * @return Job */ public function setRunning(int $running): Job { $this->running = $running; return $this; } }