Implement Organization Providers #6

Merged
TreJo merged 3 commits from organizationProvider into main 2024-10-13 18:08:55 +02:00
6 changed files with 121 additions and 16 deletions

View file

@ -16,6 +16,6 @@
<database>pgsql</database>
<database>sqlite</database>
<database>mysql</database>
<nextcloud min-version="29" max-version="29"/>
<nextcloud min-version="29" max-version="30"/>
</dependencies>
</info>

View file

@ -0,0 +1,19 @@
<?php
namespace OCA\OrganizationFolders\Model;
class Organization implements \JsonSerializable {
public function __construct(
private int $id,
private string $membersGroup,
) {
}
public function getId(): int {
return $this->id;
}
public function getMembersGroup(): string {
return $this->membersGroup;
}
}

View file

@ -0,0 +1,29 @@
<?php
namespace OCA\OrganizationFolders\Model;
class OrganizationRole implements \JsonSerializable {
public function __construct(
private int $id,
private int $organizationId,
private string $friendlyName,
private string $membersGroup,
) {
}
public function getId(): int {
return $this->id;
}
public function getOrganizationId(): int {
return $this->organizationId;
}
public function getFriendlyName(): string {
return $this->friendlyName;
}
public function getMembersGroup(): string {
return $this->membersGroup;
}
}

View file

@ -1,15 +0,0 @@
<?php
declare(strict_types=1);
namespace OCA\OrganizationFolders\OrganizationProvider;
abstract class OrganizationProvider {
protected $id;
public function getId() {
return $this->id;
}
// TODO: functions to access organisation structure
}

View file

@ -0,0 +1,72 @@
<?php
declare(strict_types=1);
namespace OCA\OrganizationFolders\OrganizationProvider;
use OCA\OrganizationFolders\Model\Organization;
use OCA\OrganizationFolders\Model\OrganizationRole;
abstract class OrganizationProvider {
protected $id;
public function getId() {
return $this->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;
}