diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php index 20fe57084210385416227cac87e1a1c627befef9..0b7aa73b8e79686dffac5603ca1345aa03d056a9 100755 --- a/src/app/user/controllers/UserController.php +++ b/src/app/user/controllers/UserController.php @@ -35,7 +35,7 @@ class UserController { $queryParams = $request->getQueryParams(); - $select = ['id', 'firstname', 'lastname']; + $select = ['id', 'firstname', 'lastname', 'substitute']; if (!empty($queryParams['mode']) && $queryParams['mode'] == 'rest') { if (!UserController::hasPrivilege(['userId' => $GLOBALS['id'], 'privilege' => 'manage_rest_users'])) { return $response->withStatus(403)->withJson(['errors' => 'Privilege forbidden']); @@ -56,6 +56,10 @@ class UserController 'orderBy' => ['lastname', 'firstname'] ]); + foreach ($users as $key => $user) { + $users[$key]['substitute'] = !empty($user['substitute']); + } + return $response->withJson(['users' => $users]); } @@ -191,9 +195,20 @@ class UserController } $set['substitute'] = null; if (!empty($body['substitute']) && $args['id'] != $body['substitute']) { - $existingUser = UserModel::getById(['id' => $body['substitute'], 'select' => [1]]); + $existingUser = UserModel::getById(['id' => $body['substitute'], 'select' => ['substitute']]); if (empty($existingUser)) { return $response->withStatus(400)->withJson(['errors' => 'Substitute user does not exist']); + } elseif (!empty($existingUser['substitute'])) { + return $response->withStatus(400)->withJson(['errors' => 'Substitute user has already substituted']); + } + + $substitutedUsers = UserModel::get(['select' => ['id'], 'where' => ['substitute = ?'], 'data' => [$args['id']]]); + foreach ($substitutedUsers as $user) { + UserModel::update([ + 'set' => ['substitute' => $body['substitute']], + 'where' => ['id = ?'], + 'data' => [$user['id']] + ]); } $set['substitute'] = $body['substitute']; }