From bc4aa364b540d805f14a132c930d19ec8e925319 Mon Sep 17 00:00:00 2001 From: dartcafe Date: Sat, 29 Feb 2020 20:36:17 +0100 Subject: [PATCH 1/2] delete user - initial commit --- appinfo/routes.php | 1 + lib/Controller/VoteController.php | 34 ++++++++ src/js/components/Base/UserDiv.vue | 11 ++- .../components/VoteTable/VoteHeaderPublic.vue | 13 ++- src/js/components/VoteTable/VoteTable.vue | 87 +++++++++++++++---- src/js/store/modules/votes.js | 20 +++++ 6 files changed, 148 insertions(+), 18 deletions(-) diff --git a/appinfo/routes.php b/appinfo/routes.php index afdb06ba3..35acc005e 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -45,6 +45,7 @@ ['name' => 'vote#get', 'url' => '/votes/get/{pollId}', 'verb' => 'GET'], ['name' => 'vote#set', 'url' => '/vote/set/', 'verb' => 'POST'], ['name' => 'vote#write', 'url' => '/vote/write/', 'verb' => 'POST'], + ['name' => 'vote#delete', 'url' => '/votes/delete/', 'verb' => 'POST'], ['name' => 'option#get', 'url' => '/options/get/{pollId}', 'verb' => 'GET'], ['name' => 'option#add', 'url' => '/option/add/', 'verb' => 'POST'], diff --git a/lib/Controller/VoteController.php b/lib/Controller/VoteController.php index 7d0cb59fd..839c27ffb 100644 --- a/lib/Controller/VoteController.php +++ b/lib/Controller/VoteController.php @@ -135,6 +135,7 @@ public function get($pollId) { */ public function set($pollId, $option, $userId, $setTo) { + $this->logger->alert('Deleting vote no. ' . $option); try { $vote = $this->mapper->findSingleVote($pollId, $option['pollOptionText'], $userId); $vote->setVoteAnswer($setTo); @@ -158,6 +159,39 @@ public function set($pollId, $option, $userId, $setTo) { } } + + /** + * delete + * @NoAdminRequired + * @param integer $voteId + * @param string $userId + * @param integer $pollId + * @return DataResponse + */ + public function delete($voteId = 0, $userId = '', $pollId = 0) { + $this->logger->alert('Deleting vote no. ' . $voteId); + + try { + if ($voteId) { + $vote = $this->mapper->delete($voteId); + $this->logger->alert('Deleting vote no. ' . $voteId); + return new DataResponse(null, Http::STATUS_OK); + } elseif ($pollId && $userId) { + $votes = $this->mapper->deleteByPollAndUser($pollId, $userId); + $this->logger->alert('Deleting votes from ' . $userId . ' in poll ' . $pollId); + return new DataResponse(null, Http::STATUS_OK); + } elseif ($pollId) { + $votes = $this->mapper->deleteByPoll($pollId); + $this->logger->alert('Deleting all votes in poll ' . $pollId); + return new DataResponse(null, Http::STATUS_OK); + } else { + return DataResponse(null, Http::STATUS_NOT_FOUND); + } + } catch (DoesNotExistException $e) { + return DataResponse(null, Http::STATUS_NOT_FOUND); + } + } + /** * Public functions */ diff --git a/src/js/components/Base/UserDiv.vue b/src/js/components/Base/UserDiv.vue index 484acca23..8059afee3 100644 --- a/src/js/components/Base/UserDiv.vue +++ b/src/js/components/Base/UserDiv.vue @@ -25,7 +25,7 @@
{{ description }}
- {{ displayName }} + @@ -53,6 +54,14 @@ export default { type: Boolean, default: false }, + disableMenu: { + type: Boolean, + default: false + }, + menuPosition: { + type: String, + default: 'left' + }, userId: { type: String, default: undefined diff --git a/src/js/components/VoteTable/VoteHeaderPublic.vue b/src/js/components/VoteTable/VoteHeaderPublic.vue index 2d010b5b7..31e201f91 100644 --- a/src/js/components/VoteTable/VoteHeaderPublic.vue +++ b/src/js/components/VoteTable/VoteHeaderPublic.vue @@ -26,8 +26,7 @@ {{ t('polls', 'Your personal link to this poll: %n', 1, personalLink) }} - +