From efca199c7f1b6b4849512916802c6387439eb1da Mon Sep 17 00:00:00 2001 From: Jonathan Treffler Date: Thu, 17 Oct 2024 13:56:32 +0200 Subject: [PATCH] added resource service --- lib/Service/ResourceService.php | 129 ++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 lib/Service/ResourceService.php diff --git a/lib/Service/ResourceService.php b/lib/Service/ResourceService.php new file mode 100644 index 0000000..71d92cb --- /dev/null +++ b/lib/Service/ResourceService.php @@ -0,0 +1,129 @@ +mapper->find($id); + } catch (Exception $e) { + $this->handleException($e, $id); + } + } + + /* Use named arguments to call this function */ + public function create( + string $type, + int $groupFolderId, + ?int $parentResource = null, + bool $active = true, + + ?int $membersAclPermission = null, + ?int $managersAclPermission = null, + ?int $inheritedAclPermission = null, + ) { + if($type === "folder") { + $resource = new FolderResource(); + } else { + throw new InvalidResourceType($type); + } + + $resource->setGroupFolderId($groupFolderId); + $resource->setParentResource($parentResource); + $resource->setActive($active); + $resource->setLastUpdatedTimestamp(time()); + + if($type === "folder") { + if(isset($membersAclPermission, $managersAclPermission, $inheritedAclPermission)) { + $resource->setMembersAclPermission($membersAclPermission); + $resource->setManagersAclPermission($managersAclPermission); + $resource->setInheritedAclPermission($inheritedAclPermission); + } else { + throw new \InvalidArgumentException("Folder specific parameters must be included, when creating a resource of type folder"); + } + } + + $resource = $this->mapper->insert($resource); + + return $resource; + } + + /* Use named arguments to call this function */ + public function update( + int $id, + + ?int $parentResource = null, + ?bool $active = null, + + ?int $membersAclPermission = null, + ?int $managersAclPermission = null, + ?int $inheritedAclPermission = null, + ): Resource { + $resource = $this->find($id); + + if(isset($parentResource)) { + $resource->setParentResource($parentResource); + } + + if(isset($active)) { + $resource->setActive($active); + } + + if($resource->getType() === "folder") { + if(isset($membersAclPermission)) { + $resource->setMembersAclPermission($membersAclPermission); + } + + if(isset($managersAclPermission)) { + $resource->setManagersAclPermission($managersAclPermission); + } + + if(isset($inheritedAclPermission)) { + $resource->setInheritedAclPermission($inheritedAclPermission); + } + } else { + throw new InvalidResourceType($resource->getType()); + } + + if(count($resource->getUpdatedFields()) > 0) { + $resource->setLastUpdatedTimestamp(time()); + } + + return $this->mapper->update($resource); + } + + public function delete(int $id): Resource { + try { + $resource = $this->mapper->find($id); + $this->mapper->delete($resource); + return $resource; + } catch (Exception $e) { + $this->handleException($e, $id); + } + } +}