. */ namespace OrangeHRM\Installer\Util\V1\Dto; use InvalidArgumentException; class Api extends DataGroup { private string $api; private string $module; /** * @param string $name * @param string $description * @param AllowedPermission $allowed * @param DataGroupPermission[] $permissions */ public function __construct( string $name, string $description, string $api, string $module, AllowedPermission $allowed, array $permissions ) { parent::__construct($name, $description, $allowed, $permissions); $this->api = $api; $this->module = $module; } /** * @param array $dataGroup * @return self */ public static function createFromArray(string $name, array $dataGroup): self { $permissions = []; foreach ($dataGroup['permissions'] as $userRolePermission) { if (isset($userRolePermission['permission']['self']) && $userRolePermission['permission']['self'] !== true) { throw new InvalidArgumentException("`self` key not allowed in `$name` > `permissions` > `permission`"); } $permissions[] = DataGroupPermission::createFromArray($userRolePermission); } return new self( $name, $dataGroup['description'], $dataGroup['api'], $dataGroup['module'], AllowedPermission::createFromArray($dataGroup['allowed']), $permissions ); } /** * @return string */ public function getApi(): string { return $this->api; } /** * @return string */ public function getModule(): string { return $this->module; } }