aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_reminders/lib/Model/RichReminder.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_reminders/lib/Model/RichReminder.php')
-rw-r--r--apps/files_reminders/lib/Model/RichReminder.php57
1 files changed, 57 insertions, 0 deletions
diff --git a/apps/files_reminders/lib/Model/RichReminder.php b/apps/files_reminders/lib/Model/RichReminder.php
new file mode 100644
index 00000000000..4f221252717
--- /dev/null
+++ b/apps/files_reminders/lib/Model/RichReminder.php
@@ -0,0 +1,57 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCA\FilesReminders\Model;
+
+use DateTimeInterface;
+use JsonSerializable;
+use OCA\FilesReminders\Db\Reminder;
+use OCA\FilesReminders\Exception\NodeNotFoundException;
+use OCP\Files\IRootFolder;
+use OCP\Files\Node;
+
+class RichReminder extends Reminder implements JsonSerializable {
+ public function __construct(
+ private Reminder $reminder,
+ private IRootFolder $root,
+ ) {
+ parent::__construct();
+ }
+
+ /**
+ * @throws NodeNotFoundException
+ */
+ public function getNode(): Node {
+ $node = $this->root->getUserFolder($this->getUserId())->getFirstNodeById($this->getFileId());
+ if (!$node) {
+ throw new NodeNotFoundException();
+ }
+ return $node;
+ }
+
+ protected function getter(string $name): mixed {
+ return $this->reminder->getter($name);
+ }
+
+ public function __call(string $methodName, array $args) {
+ return $this->reminder->__call($methodName, $args);
+ }
+
+ public function jsonSerialize(): array {
+ return [
+ 'userId' => $this->getUserId(),
+ 'fileId' => $this->getFileId(),
+ 'path' => $this->getNode()->getPath(),
+ 'dueDate' => $this->getDueDate()->format(DateTimeInterface::ATOM), // ISO 8601
+ 'updatedAt' => $this->getUpdatedAt()->format(DateTimeInterface::ATOM), // ISO 8601
+ 'createdAt' => $this->getCreatedAt()->format(DateTimeInterface::ATOM), // ISO 8601
+ 'notified' => $this->getNotified(),
+ ];
+ }
+}