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:
Diffstat (limited to 'lib/Controller/VoteController.php')
-rw-r--r--lib/Controller/VoteController.php143
1 files changed, 32 insertions, 111 deletions
diff --git a/lib/Controller/VoteController.php b/lib/Controller/VoteController.php
index ad8936bd..f666c004 100644
--- a/lib/Controller/VoteController.php
+++ b/lib/Controller/VoteController.php
@@ -23,77 +23,41 @@
namespace OCA\Polls\Controller;
-use Exception;
+// use Exception;
use OCP\AppFramework\Db\DoesNotExistException;
+use OCA\Polls\Exceptions\NotAuthorizedException;
-
-use OCP\IRequest;
use OCP\ILogger;
+use OCP\IRequest;
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 $voteService;
private $logger;
- private $mapper;
- private $groupManager;
- private $pollMapper;
- private $shareMapper;
- private $anonymizer;
- private $logService;
- private $acl;
/**
* 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
+ IRequest $request,
+ 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 +69,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(['error' => $e->getMessage()], $e->getStatus());
} catch (DoesNotExistException $e) {
- return new DataResponse($e, Http::STATUS_NOT_FOUND);
+ return new DataResponse(['error' => 'No votes'], Http::STATUS_NOT_FOUND);
}
-
}
/**
@@ -137,28 +88,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(['error' => $e->getMessage()], $e->getStatus());
} 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(['error' => 'Option not found'], Http::STATUS_NOT_FOUND);
}
}
@@ -172,27 +108,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(['error' => $e->getMessage()], $e->getStatus());
} catch (DoesNotExistException $e) {
- return DataResponse(null, Http::STATUS_NOT_FOUND);
+ return new DataResponse(['error' => ''], Http::STATUS_NOT_FOUND);
}
}
@@ -212,13 +134,13 @@ class VoteController extends Controller {
*/
public function setByToken($option, $setTo, $token) {
try {
- $this->acl->setToken($token);
+ return new DataResponse($this->voteService->set(0, $option['pollOptionText'], $setTo, $token), Http::STATUS_OK);
+ } catch (NotAuthorizedException $e) {
+ return new DataResponse(['error' => $e->getMessage()], $e->getStatus());
} catch (DoesNotExistException $e) {
- return new DataResponse($e, Http::STATUS_NOT_FOUND);
+ return new DataResponse(['error' => 'Option not found'], Http::STATUS_NOT_FOUND);
}
- return $this->set($this->acl->getPollId(), $option, $this->acl->getUserId(), $setTo);
-
}
/**
@@ -231,15 +153,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(['error' => $e->getMessage()], $e->getStatus());
} catch (DoesNotExistException $e) {
- return new DataResponse($e, Http::STATUS_NOT_FOUND);
+ return new DataResponse(['error' => 'No votes'], Http::STATUS_NOT_FOUND);
}
- return $this->get($this->acl->getPollId());
-
}
}