0
0
Fork 0
mirror of https://github.com/verdigado/organization_folders.git synced 2024-11-21 20:28:11 +01:00

added occ command to update organization folder

This commit is contained in:
Jonathan Treffler 2024-11-04 18:38:14 +01:00
parent b653a751dc
commit 5a2f872b2d
4 changed files with 106 additions and 3 deletions

View file

@ -22,6 +22,7 @@
<command>OCA\OrganizationFolders\Command\OrganizationFolder\GetOrganizationFolder</command> <command>OCA\OrganizationFolders\Command\OrganizationFolder\GetOrganizationFolder</command>
<command>OCA\OrganizationFolders\Command\OrganizationFolder\ListOrganizationFolders</command> <command>OCA\OrganizationFolders\Command\OrganizationFolder\ListOrganizationFolders</command>
<command>OCA\OrganizationFolders\Command\OrganizationFolder\CreateOrganizationFolder</command> <command>OCA\OrganizationFolders\Command\OrganizationFolder\CreateOrganizationFolder</command>
<command>OCA\OrganizationFolders\Command\OrganizationFolder\UpdateOrganizationFolder</command>
<command>OCA\OrganizationFolders\Command\OrganizationFolder\RemoveOrganizationFolder</command> <command>OCA\OrganizationFolders\Command\OrganizationFolder\RemoveOrganizationFolder</command>
<command>OCA\OrganizationFolders\Command\Resource\CreateResource</command> <command>OCA\OrganizationFolders\Command\Resource\CreateResource</command>
<command>OCA\OrganizationFolders\Command\Resource\ListResources</command> <command>OCA\OrganizationFolders\Command\Resource\ListResources</command>

View file

@ -15,16 +15,25 @@ class CreateOrganizationFolder extends BaseCommand {
->setName('organization-folders:create') ->setName('organization-folders:create')
->setDescription('Create a new organization folder') ->setDescription('Create a new organization folder')
->addOption('name', null, InputOption::VALUE_REQUIRED, 'Name of the new organization folder') ->addOption('name', null, InputOption::VALUE_REQUIRED, 'Name of the new organization folder')
->addOption('quota', null, InputOption::VALUE_REQUIRED, 'Storage Quota of the new organization folder'); ->addOption('quota', null, InputOption::VALUE_REQUIRED, 'Storage Quota of the new organization folder')
->addOption('organization-provider', null, InputOption::VALUE_OPTIONAL, 'Organization provider of the organization this folder is part of')
->addOption('organization-id', null, InputOption::VALUE_OPTIONAL, 'Organization id of the organization this folder is part of');
parent::configure(); parent::configure();
} }
protected function execute(InputInterface $input, OutputInterface $output): int { protected function execute(InputInterface $input, OutputInterface $output): int {
$name = $input->getOption('name'); $name = $input->getOption('name');
$quota = $input->getOption('quota'); $quota = $input->getOption('quota');
$organizationProviderId = $input->getOption('organization-provider');
$organizationId = $input->getOption('organization-id');
try { try {
$organizationFolder = $this->organizationFolderService->create($name, $quota); $organizationFolder = $this->organizationFolderService->create(
name: $name,
quota: $quota,
organizationProvider: $organizationProviderId,
organizationId: $organizationId,
);
$this->writeTableInOutputFormat($input, $output, [$this->formatTableSerializable($organizationFolder)]); $this->writeTableInOutputFormat($input, $output, [$this->formatTableSerializable($organizationFolder)]);
return 0; return 0;

View file

@ -0,0 +1,52 @@
<?php
namespace OCA\OrganizationFolders\Command\OrganizationFolder;
use OCP\DB\Exception;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use OCA\OrganizationFolders\Command\BaseCommand;
class UpdateOrganizationFolder extends BaseCommand {
protected function configure(): void {
$this
->setName('organization-folders:update')
->setDescription('Update a organization folder')
->addArgument('id', InputArgument::REQUIRED, 'Id of the organization folder to update')
->addOption('name', null, InputOption::VALUE_OPTIONAL, 'New name of the organization folder')
->addOption('quota', null, InputOption::VALUE_OPTIONAL, 'New storage quota of the organization folder')
->addOption('organization-provider', null, InputOption::VALUE_OPTIONAL, 'New organization provider of the organization this folder will be part of')
->addOption('organization-id', null, InputOption::VALUE_OPTIONAL, 'New Organization id of the organization this folder will be part of');
parent::configure();
}
protected function execute(InputInterface $input, OutputInterface $output): int {
$id = (int)$input->getArgument('id');
$name = $input->getOption('name');
$quota = $input->getOption('quota');
$organizationProviderId = $input->getOption('organization-provider');
if(ctype_digit($input->getOption('organization-id'))) {
$organizationId = (int)$input->getOption('organization-id');
}
try {
$organizationFolder = $this->organizationFolderService->update(
id: $id,
name: $name,
quota: $quota,
organizationProviderId: $organizationProviderId,
organizationId: $organizationId,
);
$this->writeTableInOutputFormat($input, $output, [$this->formatTableSerializable($organizationFolder)]);
return 0;
} catch (Exception $e) {
$output->writeln("<error>Exception \"{$e->getMessage()}\" at {$e->getFile()} line {$e->getLine()}</error>");
return 1;
}
}
}

View file

@ -75,7 +75,7 @@ class OrganizationFolderService {
$organization = $this->organizationProviderManager->getOrganizationProvider($organizationProvider)->getOrganization($organizationId); $organization = $this->organizationProviderManager->getOrganizationProvider($organizationProvider)->getOrganization($organizationId);
$this->tagService->update($groupfolderId, "organization_provider", $organizationProvider); $this->tagService->update($groupfolderId, "organization_provider", $organizationProvider);
$this->tagService->update($groupfolderId, "organization_id", $organization->getId()); $this->tagService->update($groupfolderId, "organization_id", (string)$organization->getId());
} }
$organizationFolder = new OrganizationFolder( $organizationFolder = new OrganizationFolder(
@ -90,6 +90,47 @@ class OrganizationFolderService {
}, $this->db); }, $this->db);
} }
public function update(
int $id,
?string $name = null,
?int $quota = null,
?string $organizationProviderId = null,
?int $organizationId = null
): OrganizationFolder {
return $this->atomic(function () use ($id, $name, $quota, $organizationProviderId, $organizationId) {
if(isset($name)) {
$this->folderManager->renameFolder($id, $name);
}
if(isset($quota)) {
$this->folderManager->setFolderQuota($id, $quota);
}
if(isset($organizationProviderId) || isset($organizationId)) {
if(!isset($organizationProviderId)) {
$organizationProviderId = $this->tagService->find($id, "organization_provider")->getTagValue();
}
if(!$this->organizationProviderManager->hasOrganizationProvider($organizationProviderId)) {
throw new \Exception("organization provider not found");
}
$organizationProvider = $this->organizationProviderManager->getOrganizationProvider($organizationProviderId);
if(!isset($organizationId)) {
$organizationId = (int)$this->tagService->find($id, "organization_id")->getTagValue();
}
$organization = $organizationProvider->getOrganization($organizationId);
$this->tagService->update($id, "organization_provider", $organizationProviderId);
$this->tagService->update($id, "organization_id", (string)$organization->getId());
}
return $this->find($id);
}, $this->db);
}
public function applyPermissions(int $id) { public function applyPermissions(int $id) {
} }