Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/polls.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordartcafe <github@dartcafe.de>2020-06-17 09:34:35 +0300
committerdartcafe <github@dartcafe.de>2020-06-17 09:34:35 +0300
commitb1c1a707d1b5523868d992b96a4ccddd1086ef2b (patch)
treec96cf74705b90ba8bb707f63d7a4c5daa9b22e0b /lib/Controller
parent076f8b3785f5728d7e61e5b9ac1233bda7e9fe3d (diff)
Added vote to API
Diffstat (limited to 'lib/Controller')
-rw-r--r--lib/Controller/PollController.php77
-rw-r--r--lib/Controller/VoteApiController.php126
-rw-r--r--lib/Controller/VoteController.php142
3 files changed, 168 insertions, 177 deletions
diff --git a/lib/Controller/PollController.php b/lib/Controller/PollController.php
index 9a7aa0d9..6bf98137 100644
--- a/lib/Controller/PollController.php
+++ b/lib/Controller/PollController.php
@@ -28,29 +28,22 @@
use OCP\IRequest;
use OCP\ILogger;
- use OCP\IL10N;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
- use OCP\IGroupManager;
use OCP\IUser;
- use OCP\IUserManager;
use OCP\Security\ISecureRandom;
use OCA\Polls\Db\Poll;
use OCA\Polls\Db\PollMapper;
use OCA\Polls\Db\Option;
use OCA\Polls\Db\OptionMapper;
- use OCA\Polls\Db\Share;
- use OCA\Polls\Db\ShareMapper;
- use OCA\Polls\Db\Vote;
- use OCA\Polls\Db\VoteMapper;
- use OCA\Polls\Service\AnonymizeService;
use OCA\Polls\Service\CommentService;
use OCA\Polls\Service\OptionService;
+ use OCA\Polls\Service\ShareService;
+ use OCA\Polls\Service\VoteService;
use OCA\Polls\Service\LogService;
- use OCA\Polls\Service\MailService;
use OCA\Polls\Model\Acl;
class PollController extends Controller {
@@ -58,18 +51,13 @@
private $userId;
private $pollMapper;
private $optionMapper;
- private $shareMapper;
- private $voteMapper;
- private $trans;
private $logger;
- private $groupManager;
- private $userManager;
private $poll;
- private $anonymizer;
private $logService;
private $commentService;
private $optionService;
- private $mailService;
+ private $shareService;
+ private $voteService;
private $acl;
/**
@@ -78,16 +66,13 @@
* @param $userId
* @param IRequest $request
* @param ILogger $logger
- * @param IL10N $trans
* @param OptionMapper $optionMapper
* @param PollMapper $pollMapper
- * @param IGroupManager $groupManager
- * @param IUserManager $userManager
* @param LogService $logService
- * @param MailService $mailService
- * @param AnonymizeService $anonymizer
* @param CommentService $commentService
* @param OptionService $optionService
+ * @param ShareService $shareService
+ * @param VoteService $voteService
* @param Acl $acl
*/
@@ -96,37 +81,27 @@
$userId,
IRequest $request,
ILogger $logger,
- IL10N $trans,
OptionMapper $optionMapper,
PollMapper $pollMapper,
- ShareMapper $shareMapper,
- VoteMapper $voteMapper,
Poll $poll,
- IGroupManager $groupManager,
- IUserManager $userManager,
LogService $logService,
- MailService $mailService,
CommentService $commentService,
OptionService $optionService,
- AnonymizeService $anonymizer,
+ ShareService $shareService,
+ VoteService $voteService,
Acl $acl
) {
parent::__construct($appName, $request);
$this->userId = $userId;
- $this->trans = $trans;
$this->pollMapper = $pollMapper;
$this->optionMapper = $optionMapper;
- $this->shareMapper = $shareMapper;
- $this->voteMapper = $voteMapper;
$this->logger = $logger;
- $this->groupManager = $groupManager;
- $this->userManager = $userManager;
$this->poll = $poll;
$this->logService = $logService;
- $this->mailService = $mailService;
$this->commentService = $commentService;
$this->optionService = $optionService;
- $this->anonymizer = $anonymizer;
+ $this->shareService = $shareService;
+ $this->voteService = $voteService;
$this->acl = $acl;
}
@@ -185,34 +160,13 @@
return new DataResponse(null, Http::STATUS_UNAUTHORIZED);
}
- $options = $this->optionMapper->findByPoll($pollId);
-
- if ($this->acl->getAllowEdit()) {
- $shares = $this->shareMapper->findByPoll($pollId);
- } else {
- $shares = [];
- }
-
- if ($this->acl->getAllowSeeUsernames()) {
-
- if ($this->acl->getAllowSeeResults()) {
- $votes = $this->voteMapper->findByPoll($pollId);
- } else {
- $votes = $this->voteMapper->findByPollAndUser($pollId, $this->acl->getUserId());
- }
- } else {
- $this->anonymizer->set($pollId, $this->acl->getUserId());
- $votes = $this->anonymizer->getVotes();
-
- }
-
return new DataResponse([
'acl' => $this->acl,
+ 'poll' => $this->poll,
'comments' => $this->commentService->list($pollId),
'options' => $this->optionService->list($pollId),
- 'poll' => $this->poll,
- 'shares' => $shares,
- 'votes' => $votes
+ 'shares' => $this->shareService->list($pollId),
+ 'votes' => $this->voteService->list($pollId)
], Http::STATUS_OK);
} catch (DoesNotExistException $e) {
@@ -355,11 +309,6 @@
$this->logService->setLog($this->poll->getId(), 'addPoll');
}
return $this->get($this->poll->getId());
- // $this->acl->setPollId($this->poll->getId());
- // return new DataResponse([
- // 'poll' => $this->poll,
- // 'acl' => $this->acl
- // ], Http::STATUS_OK);
}
}
diff --git a/lib/Controller/VoteApiController.php b/lib/Controller/VoteApiController.php
new file mode 100644
index 00000000..71c42966
--- /dev/null
+++ b/lib/Controller/VoteApiController.php
@@ -0,0 +1,126 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Vinzenz Rosenkranz <vinzenz.rosenkranz@gmail.com>
+ *
+ * @author René Gieling <github@dartcafe.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Polls\Controller;
+
+use Exception;
+use OCP\AppFramework\Db\DoesNotExistException;
+
+use OCP\IRequest;
+use OCP\ILogger;
+use OCP\AppFramework\ApiController;
+use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\DataResponse;
+
+use OCA\Polls\Service\VoteService;
+
+class VoteApiController extends ApiController {
+
+ private $logger;
+ private $voteService;
+
+ /**
+ * VoteController constructor.
+ * @param string $appName
+ * @param IRequest $request
+ * @param ILogger $logger
+ * @param VoteService $voteService
+ */
+ public function __construct(
+ string $appName,
+ IRequest $request,
+ ILogger $logger,
+ VoteService $voteService
+ ) {
+ parent::__construct($appName,
+ $request,
+ 'PUT, GET, DELETE',
+ 'Authorization, Content-Type, Accept',
+ 1728000);
+ $this->voteService = $voteService;
+ $this->logger = $logger;
+ }
+
+ /**
+ * Get all votes of given poll
+ * Read all votes of a poll based on the poll id and return list as array
+ * @NoAdminRequired
+ * @NoCSRFRequired
+ * @CORS
+ * @param integer $pollId
+ * @return DataResponse
+ */
+ public function list($pollId) {
+ try {
+ return new DataResponse($this->voteService->list($pollId), Http::STATUS_OK);
+ } catch (NotAuthorizedException $e) {
+ return new DataResponse('Unauthorized', Http::STATUS_FORBIDDEN);
+ } catch (DoesNotExistException $e) {
+ return new DataResponse('No votes', Http::STATUS_NOT_FOUND);
+ }
+ }
+
+ /**
+ * set
+ * @NoAdminRequired
+ * @NoCSRFRequired
+ * @CORS
+ * @param integer $pollId
+ * @param Array $option
+ * @param string $userId
+ * @param string $setTo
+ * @return DataResponse
+ */
+ public function set($pollId, $pollOptionText, $setTo) {
+ try {
+ return new DataResponse($this->voteService->set($pollId, $pollOptionText, $setTo), Http::STATUS_OK);
+ } catch (NotAuthorizedException $e) {
+ return new DataResponse('Unauthorized', Http::STATUS_FORBIDDEN);
+ } catch (DoesNotExistException $e) {
+ return new DataResponse('Option not found', Http::STATUS_NOT_FOUND);
+ }
+
+ }
+
+
+ /**
+ * delete
+ * @NoAdminRequired
+ * @NoCSRFRequired
+ * @CORS
+ * @param integer $voteId
+ * @param string $userId
+ * @param integer $pollId
+ * @return DataResponse
+ */
+ public function delete($pollId, $userId) {
+ try {
+ return new DataResponse($this->voteService->delete($userId, $pollId), Http::STATUS_OK);
+ } catch (NotAuthorizedException $e) {
+ return new DataResponse('Unauthorized', Http::STATUS_FORBIDDEN);
+ } catch (DoesNotExistException $e) {
+ return new DataResponse('', Http::STATUS_NOT_FOUND);
+ }
+ }
+
+}
diff --git a/lib/Controller/VoteController.php b/lib/Controller/VoteController.php
index ad8936bd..7205c14f 100644
--- a/lib/Controller/VoteController.php
+++ b/lib/Controller/VoteController.php
@@ -23,77 +23,36 @@
namespace OCA\Polls\Controller;
-use Exception;
+// use Exception;
use OCP\AppFramework\Db\DoesNotExistException;
-
use OCP\IRequest;
-use OCP\ILogger;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
-use OCP\IGroupManager;
+use OCA\Polls\Service\VoteService;
-use OCA\Polls\Db\Poll;
-use OCA\Polls\Db\PollMapper;
-use OCA\Polls\Db\Vote;
-use OCA\Polls\Db\VoteMapper;
-use OCA\Polls\Db\Share;
-use OCA\Polls\Db\ShareMapper;
-use OCA\Polls\Service\AnonymizeService;
-use OCA\Polls\Service\LogService;
-use OCA\Polls\Model\Acl;
class VoteController extends Controller {
- private $userId;
- private $logger;
- private $mapper;
- private $groupManager;
- private $pollMapper;
- private $shareMapper;
- private $anonymizer;
- private $logService;
- private $acl;
+ private $voteService;
/**
* VoteController constructor.
* @param string $appName
- * @param $userId
* @param IRequest $request
* @param ILogger $logger
- * @param VoteMapper $mapper
- * @param IGroupManager $groupManager
- * @param PollMapper $pollMapper
- * @param ShareMapper $shareMapper
- * @param AnonymizeService $anonymizer
- * @param LogService $logService
- * @param Acl $acl
+ * @param VoteService $voteService
+
*/
public function __construct(
string $appName,
- $UserId,
IRequest $request,
- ILogger $logger,
- VoteMapper $mapper,
- IGroupManager $groupManager,
- PollMapper $pollMapper,
- ShareMapper $shareMapper,
- AnonymizeService $anonymizer,
- LogService $logService,
- Acl $acl
+ VoteService $voteService
) {
parent::__construct($appName, $request);
- $this->userId = $UserId;
- $this->mapper = $mapper;
- $this->logger = $logger;
- $this->groupManager = $groupManager;
- $this->pollMapper = $pollMapper;
- $this->shareMapper = $shareMapper;
- $this->anonymizer = $anonymizer;
- $this->logService = $logService;
- $this->acl = $acl;
+ $this->voteService = $voteService;
}
/**
@@ -105,26 +64,13 @@ class VoteController extends Controller {
* @return DataResponse
*/
public function get($pollId) {
-
try {
-
- if (!$this->acl->getFoundByToken()) {
- $this->acl->setPollId($pollId);
- }
-
- if (!$this->acl->getAllowSeeResults()) {
- return new DataResponse((array) $this->mapper->findByPollAndUser($pollId, $this->acl->getUserId()), Http::STATUS_OK);
- } elseif (!$this->acl->getAllowSeeUsernames()) {
- $this->anonymizer->set($pollId, $this->acl->getUserId());
- return new DataResponse((array) $this->anonymizer->getVotes(), Http::STATUS_OK);
- } else {
- return new DataResponse((array) $this->mapper->findByPoll($pollId), Http::STATUS_OK);
- }
-
+ return new DataResponse($this->voteService->list($pollId), Http::STATUS_OK);
+ } catch (NotAuthorizedException $e) {
+ return new DataResponse('Unauthorized', Http::STATUS_FORBIDDEN);
} catch (DoesNotExistException $e) {
- return new DataResponse($e, Http::STATUS_NOT_FOUND);
+ return new DataResponse('No votes', Http::STATUS_NOT_FOUND);
}
-
}
/**
@@ -137,28 +83,13 @@ class VoteController extends Controller {
* @param string $setTo
* @return DataResponse
*/
- public function set($pollId, $option, $userId, $setTo) {
-
+ public function set($pollId, $option, $setTo) {
try {
- $vote = $this->mapper->findSingleVote($pollId, $option['pollOptionText'], $userId);
- $vote->setVoteAnswer($setTo);
- $this->mapper->update($vote);
-
+ return new DataResponse($this->voteService->set($pollId, $option['pollOptionText'], $setTo), Http::STATUS_OK);
+ } catch (NotAuthorizedException $e) {
+ return new DataResponse('Unauthorized', Http::STATUS_FORBIDDEN);
} catch (DoesNotExistException $e) {
- // Vote does not exist, insert as new Vote
- $vote = new Vote();
-
- $vote->setPollId($pollId);
- $vote->setUserId($userId);
- $vote->setVoteOptionText($option['pollOptionText']);
- $vote->setVoteOptionId($option['id']);
- $vote->setVoteAnswer($setTo);
-
- $this->mapper->insert($vote);
-
- } finally {
- $this->logService->setLog($vote->getPollId(), 'setVote', $vote->getUserId());
- return new DataResponse($vote, Http::STATUS_OK);
+ return new DataResponse('Option not found', Http::STATUS_NOT_FOUND);
}
}
@@ -172,27 +103,13 @@ class VoteController extends Controller {
* @param integer $pollId
* @return DataResponse
*/
- public function delete($voteId = 0, $userId = '', $pollId = 0) {
- $this->logger->alert('Deleting vote no. ' . $voteId);
-
+ public function delete($userId, $pollId) {
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);
- }
+ return new DataResponse($this->voteService->delete($pollId, $userId), Http::STATUS_OK);
+ } catch (NotAuthorizedException $e) {
+ return new DataResponse('Unauthorized', Http::STATUS_FORBIDDEN);
} catch (DoesNotExistException $e) {
- return DataResponse(null, Http::STATUS_NOT_FOUND);
+ return new DataResponse('', Http::STATUS_NOT_FOUND);
}
}
@@ -212,13 +129,13 @@ class VoteController extends Controller {
*/
public function setByToken($option, $setTo, $token) {
try {
- $this->acl->setToken($token);
+ return new DataResponse($this->voteService->set(null, $option['pollOptionText'], $setTo, $token), Http::STATUS_OK);
+ } catch (NotAuthorizedException $e) {
+ return new DataResponse('Unauthorized', Http::STATUS_FORBIDDEN);
} catch (DoesNotExistException $e) {
- return new DataResponse($e, Http::STATUS_NOT_FOUND);
+ return new DataResponse('Option not found', Http::STATUS_NOT_FOUND);
}
- return $this->set($this->acl->getPollId(), $option, $this->acl->getUserId(), $setTo);
-
}
/**
@@ -231,15 +148,14 @@ class VoteController extends Controller {
* @return DataResponse
*/
public function getByToken($token) {
-
try {
- $this->acl->setToken($token);
+ return new DataResponse($this->voteService->list(null, $token), Http::STATUS_OK);
+ } catch (NotAuthorizedException $e) {
+ return new DataResponse('Unauthorized', Http::STATUS_FORBIDDEN);
} catch (DoesNotExistException $e) {
- return new DataResponse($e, Http::STATUS_NOT_FOUND);
+ return new DataResponse('No votes', Http::STATUS_NOT_FOUND);
}
- return $this->get($this->acl->getPollId());
-
}
}