From 92cef844d4de8ecec1e465cf7d65a189ef304e9c Mon Sep 17 00:00:00 2001 From: Jonathan Treffler Date: Sun, 13 Oct 2024 18:06:53 +0200 Subject: [PATCH] implemented Organization Provider models --- lib/Model/Organization.php | 19 +++++ lib/Model/OrganizationRole.php | 29 ++++++++ .../OrganisationProvider.php | 47 ------------ .../OrganizationProvider.php | 72 +++++++++++++++++++ ...er.php => OrganizationProviderManager.php} | 0 5 files changed, 120 insertions(+), 47 deletions(-) create mode 100644 lib/Model/Organization.php create mode 100644 lib/Model/OrganizationRole.php delete mode 100644 lib/OrganisationProvider/OrganisationProvider.php create mode 100644 lib/OrganisationProvider/OrganizationProvider.php rename lib/OrganisationProvider/{OrganisationProviderManager.php => OrganizationProviderManager.php} (100%) diff --git a/lib/Model/Organization.php b/lib/Model/Organization.php new file mode 100644 index 0000000..56729eb --- /dev/null +++ b/lib/Model/Organization.php @@ -0,0 +1,19 @@ +id; + } + + public function getMembersGroup(): string { + return $this->membersGroup; + } +} \ No newline at end of file diff --git a/lib/Model/OrganizationRole.php b/lib/Model/OrganizationRole.php new file mode 100644 index 0000000..3358bfb --- /dev/null +++ b/lib/Model/OrganizationRole.php @@ -0,0 +1,29 @@ +id; + } + + public function getOrganizationId(): int { + return $this->organizationId; + } + + public function getFriendlyName(): string { + return $this->friendlyName; + } + + public function getMembersGroup(): string { + return $this->membersGroup; + } +} \ No newline at end of file diff --git a/lib/OrganisationProvider/OrganisationProvider.php b/lib/OrganisationProvider/OrganisationProvider.php deleted file mode 100644 index 2455ba7..0000000 --- a/lib/OrganisationProvider/OrganisationProvider.php +++ /dev/null @@ -1,47 +0,0 @@ -id; - } - - /* Return one level of the Organization Tree */ - /* - * ┌────────────────────────────┐ - * │ Root Node │ - * │ (of Organization Provider) │ - * └──┬──────────────────────┬──┘ - * │ │ - * │ │ - * ┌── ── ── │── ── ── ── ── ── ── ─│─ ── ── ─┐ - * │ │ - * │ ▼ ▼ │ - * ┌──────────────┐ ┌──────────────┐ - * │ │ │ │ │ │ - * │Organization 1│ │Organization 2│ ◄── ── ── getOrganizations(); - * │ │ │ │ │ │ - * └┬────────────┬┘ └┬────────────┬┘ - * │ │ │ │ │ │ - * │ │ │ │ - * └── ├─ ── ── ── ─┤ ── ── ─┼ ── ── ── ──│── ┘ - * │ │ │ │ - * ▼ ▼ │ │ - * ... ... ▼ ▼ - * ┌── ── ── ── ── ── ── ── ── ── ─┐ - * ┌────────────┐ ┌────────────┐ - * │ │ │ │ │ │ - * │ Suborg. 21 │ │ Suborg. 22 │ ◄── ── ── getOrganizations(2); - * │ │ │ │ │ │ - * └────────────┘ └────────────┘ - * └── ── ── ── ── ── ── ── ── ── ─┘ - */ - abstract public function getOrganizations(?int $parentOrganizationId); - - abstract public function getRolesOfOrganization(int $organizationId); -} \ No newline at end of file diff --git a/lib/OrganisationProvider/OrganizationProvider.php b/lib/OrganisationProvider/OrganizationProvider.php new file mode 100644 index 0000000..9266a84 --- /dev/null +++ b/lib/OrganisationProvider/OrganizationProvider.php @@ -0,0 +1,72 @@ +id; + } + + /** + * Get specific role by its id (unique within OrganizationProvider) + * @return Organization + */ + abstract public function getOrganization(int $id): Organization; + + /** + * Return one level of the Organization Tree + * + * ┌────────────────────────────┐ + * │ Root Node │ + * │ (of Organization Provider) │ + * └──┬──────────────────────┬──┘ + * │ │ + * │ │ + * ┌── ── ── │── ── ── ── ── ── ── ─│─ ── ── ─┐ + * │ │ + * │ ▼ ▼ │ + * ┌──────────────┐ ┌──────────────┐ + * │ │ │ │ │ │ + * │Organization 1│ │Organization 2│ ◄── ── ── getSubOrganizations(); + * │ │ │ │ │ │ + * └┬────────────┬┘ └┬────────────┬┘ + * │ │ │ │ │ │ + * │ │ │ │ + * └── ├─ ── ── ── ─┤ ── ── ─┼ ── ── ── ──│── ┘ + * │ │ │ │ + * ▼ ▼ │ │ + * ... ... ▼ ▼ + * ┌── ── ── ── ── ── ── ── ── ── ─┐ + * ┌────────────┐ ┌────────────┐ + * │ │ │ │ │ │ + * │ Suborg. 21 │ │ Suborg. 22 │ ◄── ── ── getSubOrganizations(2); + * │ │ │ │ │ │ + * └────────────┘ └────────────┘ + * └── ── ── ── ── ── ── ── ── ── ─┘ + * + * @return Organization[] + */ + abstract public function getSubOrganizations(?int $parentOrganizationId): array; + + /** + * Get specific role by its id (unique within OrganizationProvider) + * + * @return OrganizationRole + */ + abstract public function getRole(int $id): OrganizationRole; + + /** + * Get all roles of a specific organization + * + * @return OrganizationRole[] + */ + abstract public function getRolesOfOrganization(int $organizationId): array; + +} \ No newline at end of file diff --git a/lib/OrganisationProvider/OrganisationProviderManager.php b/lib/OrganisationProvider/OrganizationProviderManager.php similarity index 100% rename from lib/OrganisationProvider/OrganisationProviderManager.php rename to lib/OrganisationProvider/OrganizationProviderManager.php