From 13a2dfa5cd8e043c0000c6a61748ce6e57a3a75e Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 2 May 2023 06:59:17 +0000 Subject: [PATCH] method to update project team --- app/controllers/api/projects.php | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 64ce9c8a67..b3c19f14a0 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -404,6 +404,46 @@ App::patch('/v1/projects/:projectId') $response->dynamic($project, Response::MODEL_PROJECT); }); +App::patch('/v1/projects/:projectId/team') + ->desc('Update Project Team') + ->groups(['api', 'projects']) + ->label('scope', 'projects.write') + ->label('sdk.auth', [APP_AUTH_TYPE_ADMIN]) + ->label('sdk.namespace', 'projects') + ->label('sdk.method', 'updateTeam') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_PROJECT) + ->param('projectId', '', new UID(), 'Project unique ID.') + ->param('teamId', '', new UID(), 'Team ID of the team to transfer project to.') + ->inject('response') + ->inject('dbForConsole') + ->action(function (string $projectId, string $teamId, Response $response, Database $dbForConsole) { + + $project = $dbForConsole->getDocument('projects', $projectId); + $team = $dbForConsole->getDocument('teams', $teamId); + + if ($project->isEmpty()) { + throw new Exception(Exception::PROJECT_NOT_FOUND); + } + + if ($team->isEmpty()) { + throw new Exception(Exception::TEAM_NOT_FOUND); + } + + $project = $dbForConsole->updateDocument('projects', $project->getId(), $project + ->setAttribute('teamId', $teamId) + ->setAttribute('$permissions', [ + Permission::read(Role::team(ID::custom($teamId))), + Permission::update(Role::team(ID::custom($teamId), 'owner')), + Permission::update(Role::team(ID::custom($teamId), 'developer')), + Permission::delete(Role::team(ID::custom($teamId), 'owner')), + Permission::delete(Role::team(ID::custom($teamId), 'developer')), + ])); + + $response->dynamic($project, Response::MODEL_PROJECT); + }); + App::patch('/v1/projects/:projectId/service') ->desc('Update service status') ->groups(['api', 'projects'])