implemented Organization Provider models

This commit is contained in:
Jonathan Treffler 2024-10-13 18:06:53 +02:00
parent 0e197d02cb
commit 92cef844d4
5 changed files with 120 additions and 47 deletions

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

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;
}