added not found errors to be used by organization providers

This commit is contained in:
Jonathan Treffler 2024-10-13 23:04:20 +02:00
parent 38b1406d40
commit 2521a35b2a
6 changed files with 46 additions and 2 deletions

View file

@ -0,0 +1,14 @@
<?php
namespace OCA\OrganizationFolders\Errors;
abstract class NotFoundException extends \RuntimeException {
public function __construct($entity, array|string $criteria) {
$message = sprintf(
"Could not find %s with criteria %s",
class_exists($entity) ? array_pop(explode('\\', $entity)) : $entity,
is_string($criteria) ? $criteria : json_encode($criteria),
);
parent::__construct($message);
}
}

View file

@ -0,0 +1,9 @@
<?php
namespace OCA\OrganizationFolders\Errors;
class OrganizationNotFound extends NotFoundException {
public function __construct($provider, $id) {
parent::__construct(OCA\OrganizationFolders\Model\Organization::class, ["provider" => $provider, "id" => $id]);
}
}

View file

@ -0,0 +1,9 @@
<?php
namespace OCA\OrganizationFolders\Errors;
class OrganizationRoleNotFound extends NotFoundException {
public function __construct($provider, $id) {
parent::__construct(OCA\OrganizationFolders\Model\OrganizationRole::class, ["provider" => $provider, "id" => $id]);
}
}

View file

@ -6,7 +6,7 @@ namespace OCA\OrganizationFolders\Events;
use OCP\EventDispatcher\Event;
use OCA\OrganizationFolders\Transport\OrganizationProviderManager;
use OCA\OrganizationFolders\OrganizationProvider\OrganizationProviderManager;
/**
* This event is triggered during the initialization of Organization Folders.

View file

@ -7,6 +7,9 @@ namespace OCA\OrganizationFolders\OrganizationProvider;
use OCA\OrganizationFolders\Model\Organization;
use OCA\OrganizationFolders\Model\OrganizationRole;
use OCA\OrganizationFolders\Errors\OrganizationNotFound;
use OCA\OrganizationFolders\Errors\OrganizationRoleNotFound;
abstract class OrganizationProvider {
protected $id;
@ -17,6 +20,7 @@ abstract class OrganizationProvider {
/**
* Get specific role by its id (unique within OrganizationProvider)
* @return Organization
* @throws OrganizationNotFound
*/
abstract public function getOrganization(int $id): Organization;
@ -56,9 +60,10 @@ abstract class OrganizationProvider {
abstract public function getSubOrganizations(?int $parentOrganizationId): array;
/**
* Get specific role by its id (unique within OrganizationProvider)
* Get a specific role by its id (must be unique within organization provider, not just within parent organization)
*
* @return OrganizationRole
* @throws OrganizationRoleNotFound
*/
abstract public function getRole(int $id): OrganizationRole;

View file

@ -26,6 +26,13 @@ class OrganizationProviderManager {
return $this->organizationProviders;
}
/**
* @return bool
*/
public function hasOrganizationProvider($id): bool {
return array_key_exists($id, $this->organizationProviders);
}
/**
* @return OrganizationProvider
*/