setRepository($repository); } protected Job $repository; public function getRepository(): Job { return $this->repository; } public function setRepository(Job $repository): Jobs { $this->repository = $repository; return $this; } public function schedule(int $message_id): bool { $data = [ 'message_id' => $message_id, 'date_time' => (new DateTimeImmutable())->format('Y-m-d H:i:s') ]; try { $job = $this->getRepository()->create($data); $this->getRepository()->save($job); return true; } catch (PDOException $e) { return false; } } public function getPending(): array { return $this->getRepository()->fetchAllPending(); } public function isPending(int $message_id): bool { try { $this->getRepository()->fetchPendingByMessage($message_id); return true; } catch (BlankResult $e) { return false; } } public function find(int $message_id): \ProVM\Emails\Model\Job { return $this->getRepository()->fetchPendingByMessage($message_id); } public function execute(int $job_id): bool { try { $job = $this->getRepository()->fetchById($job_id); $job->wasExecuted(); $this->getRepository()->save($job); return true; } catch (PDOException $e) { return false; } } }