From e455088a04bed29afcd66afdb9aa1dfb420a4ae6 Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Thu, 29 Oct 2020 15:01:31 +0100 Subject: [PATCH] FEAT #14324 TIME 0:40 save featureTour in database --- migration/20.10/2010.sql | 2 ++ rest/index.php | 1 + sql/structure.sql | 5 ++-- .../controllers/ExportSEDATrait.php | 18 +++-------- .../controllers/RegisteredMailController.php | 4 ++- src/app/user/controllers/UserController.php | 30 ++++++++++++++++++- src/core/lang/lang-en.php | 1 + src/core/lang/lang-fr.php | 1 + src/core/lang/lang-nl.php | 1 + 9 files changed, 45 insertions(+), 18 deletions(-) diff --git a/migration/20.10/2010.sql b/migration/20.10/2010.sql index 82d0819100a..5bf33828b4b 100755 --- a/migration/20.10/2010.sql +++ b/migration/20.10/2010.sql @@ -36,6 +36,8 @@ ALTER TABLE users ADD COLUMN mode users_modes NOT NULL DEFAULT 'standard'; UPDATE users set mode = 'root_invisible' WHERE user_id = 'superadmin'; ALTER TABLE users DROP COLUMN IF EXISTS authorized_api; ALTER TABLE users ADD COLUMN authorized_api jsonb NOT NULL DEFAULT '[]'; +ALTER TABLE users DROP COLUMN IF EXISTS feature_tour; +ALTER TABLE users ADD COLUMN feature_tour jsonb NOT NULL DEFAULT '[]'; DO $$ BEGIN IF (SELECT count(column_name) from information_schema.columns where table_name = 'users' and column_name = 'loginmode') THEN diff --git a/rest/index.php b/rest/index.php index 6e78de30eea..14d9259b1f3 100755 --- a/rest/index.php +++ b/rest/index.php @@ -567,6 +567,7 @@ $app->put('/versionsUpdateSQL', \VersionUpdate\controllers\VersionUpdateControll $app->get('/currentUser/profile', \User\controllers\UserController::class . ':getProfile'); $app->put('/currentUser/profile', \User\controllers\UserController::class . ':updateProfile'); $app->put('/currentUser/profile/preferences', \User\controllers\UserController::class . ':updateCurrentUserPreferences'); +$app->put('/currentUser/profile/featureTour', \User\controllers\UserController::class . ':updateCurrentUserFeatureTour'); $app->post('/currentUser/emailSignature', \User\controllers\UserController::class . ':createCurrentUserEmailSignature'); $app->put('/currentUser/emailSignature/{id}', \User\controllers\UserController::class . ':updateCurrentUserEmailSignature'); $app->delete('/currentUser/emailSignature/{id}', \User\controllers\UserController::class . ':deleteCurrentUserEmailSignature'); diff --git a/sql/structure.sql b/sql/structure.sql index e03bcc9a582..098b8946ab9 100755 --- a/sql/structure.sql +++ b/sql/structure.sql @@ -229,8 +229,9 @@ CREATE TABLE users reset_token text, failed_authentication INTEGER DEFAULT 0, locked_until TIMESTAMP without time zone, - authorized_api jsonb NOT NULL DEFAULT '[]', - external_id jsonb DEFAULT '{}', + authorized_api jsonb NOT NULL DEFAULT '[]', + external_id jsonb DEFAULT '{}', + feature_tour jsonb NOT NULL DEFAULT '[]'; CONSTRAINT users_pkey PRIMARY KEY (user_id), CONSTRAINT users_id_key UNIQUE (id) ) diff --git a/src/app/external/exportSeda/controllers/ExportSEDATrait.php b/src/app/external/exportSeda/controllers/ExportSEDATrait.php index c5304a32f72..75b428ab6c9 100644 --- a/src/app/external/exportSeda/controllers/ExportSEDATrait.php +++ b/src/app/external/exportSeda/controllers/ExportSEDATrait.php @@ -67,20 +67,10 @@ trait ExportSEDATrait return ['errors' => ['No senderOrgRegNumber found in config.json']]; } - if (empty($args['data']['packageName'])) { - return ['errors' => ['packageName is empty']]; - } - if (empty($args['data']['archivalAgreement'])) { - return ['errors' => ['archivalAgreement is empty']]; - } - if (empty($args['data']['slipId'])) { - return ['errors' => ['slipId is empty']]; - } - if (empty($args['data']['entityArchiveRecipient'])) { - return ['errors' => ['entityArchiveRecipient is empty']]; - } - if (empty($args['data']['archiveDescriptionLevel'])) { - return ['errors' => ['archiveDescriptionLevel is empty']]; + foreach (['packageName', 'archivalAgreement', 'slipId', 'entityArchiveRecipient', 'archiveDescriptionLevel'] as $value) { + if (empty($args['data'][$value])) { + return ['errors' => [$value . ' is empty']]; + } } foreach ($args['data']['archives'] as $archiveUnit) { diff --git a/src/app/registeredMail/controllers/RegisteredMailController.php b/src/app/registeredMail/controllers/RegisteredMailController.php index 2c785d3ef14..f49209b189f 100644 --- a/src/app/registeredMail/controllers/RegisteredMailController.php +++ b/src/app/registeredMail/controllers/RegisteredMailController.php @@ -1084,8 +1084,10 @@ class RegisteredMailController $registeredMail[0]['number'] = $registeredMail[0]['alt_identifier']; $registeredMail[0]['issuingSite'] = $registeredMail[0]['issuing_site']; unset($registeredMail[0]['issuing_site']); + + return $registeredMail[0]; } - return $registeredMail[0]; + return []; } } diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php index 6a3e73df43e..4e9a368b5f4 100755 --- a/src/app/user/controllers/UserController.php +++ b/src/app/user/controllers/UserController.php @@ -527,9 +527,10 @@ class UserController public function getProfile(Request $request, Response $response) { - $user = UserModel::getById(['id' => $GLOBALS['id'], 'select' => ['id', 'user_id', 'firstname', 'lastname', 'phone', 'mail', 'initials', 'preferences', 'external_id', 'status', 'mode']]); + $user = UserModel::getById(['id' => $GLOBALS['id'], 'select' => ['id', 'user_id', 'firstname', 'lastname', 'phone', 'mail', 'initials', 'preferences', 'external_id', 'status', 'mode', 'feature_tour']]); $user['external_id'] = json_decode($user['external_id'], true); $user['preferences'] = json_decode($user['preferences'], true); + $user['featureTour'] = json_decode($user['feature_tour'], true); $user['signatures'] = UserSignatureModel::getByUserSerialId(['userSerialid' => $user['id']]); $user['emailSignatures'] = UserEmailSignatureModel::getByUserId(['userId' => $GLOBALS['id']]); $user['groups'] = UserModel::getGroupsByLogin(['login' => $user['user_id']]); @@ -604,6 +605,33 @@ class UserController return $response->withStatus(204); } + public function updateCurrentUserFeatureTour(Request $request, Response $response) + { + $body = $request->getParsedBody(); + + if (!Validator::notEmpty()->validate($body['featureTour'])) { + return $response->withStatus(400)->withJson(['errors' => 'Body featureTour is empty']); + } + + UserModel::update([ + 'set' => [ + 'feature_tour' => json_encode($body['featureTour']) + ], + 'where' => ['id = ?'], + 'data' => [$GLOBALS['id']] + ]); + + HistoryController::add([ + 'tableName' => 'users', + 'recordId' => $GLOBALS['id'], + 'eventType' => 'UP', + 'eventId' => 'userModification', + 'info' => _USER_FEATURE_TOUR_UPDATED . " {$user['firstname']} {$user['lastname']}" + ]); + + return $response->withStatus(204); + } + public function updateCurrentUserPreferences(Request $request, Response $response) { $body = $request->getParsedBody(); diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php index ba7fa2c1b22..211b7d91733 100755 --- a/src/core/lang/lang-en.php +++ b/src/core/lang/lang-en.php @@ -417,6 +417,7 @@ define("_CANNOT_SYNCHRONIZE_M2M_ANNUARY", "Contact cannot be added in M2M annuar define("_DATE_LOCALE", "en_US.utf8"); define("_USER_PREFERENCE_UPDATED", "User preferences updated"); +define("_USER_FEATURE_TOUR_UPDATED", "One or some steps done in the feature tour"); define("_NO_SENDERS", "No sender linked to resource"); diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php index e8ea8885c7f..0ee2a8697a4 100755 --- a/src/core/lang/lang-fr.php +++ b/src/core/lang/lang-fr.php @@ -417,6 +417,7 @@ define("_CANNOT_SYNCHRONIZE_M2M_ANNUARY", "Le contact ne peut pas être ajouté define("_DATE_LOCALE", "fr_FR.utf8"); define("_USER_PREFERENCE_UPDATED", "Préférences utilisateur modifiées"); +define("_USER_FEATURE_TOUR_UPDATED", "Une ou plusieurs étapes du tutorial a été fait"); define("_NO_SENDERS", "Aucun expéditeur lié au courrier"); diff --git a/src/core/lang/lang-nl.php b/src/core/lang/lang-nl.php index f1011adde6d..4febea0ff85 100755 --- a/src/core/lang/lang-nl.php +++ b/src/core/lang/lang-nl.php @@ -418,6 +418,7 @@ define("_CANNOT_SYNCHRONIZE_M2M_ANNUARY", "Contact can not be added in M2M annua define("_DATE_LOCALE", "en_US.utf8"); define("_USER_PREFERENCE_UPDATED", "User preferences updated"); //TO TRANSLATE +define("_USER_FEATURE_TOUR_UPDATED", "One or some steps done in the feature tour"); //TO TRANSLATE define("_NO_SENDERS", "No sender linked to resource"); //TO TRANSLATE -- GitLab