Merge pull request #257 from nextcloud/fix/results
Fix displaying of result info again
This commit is contained in:
commit
01d9fc3cce
|
@ -40,7 +40,6 @@ return [
|
|||
['name' => 'api#write_form', 'url' => '/write/form', 'verb' => 'POST'],
|
||||
['name' => 'api#get_form', 'url' => '/get/form/{formIdOrHash}', 'verb' => 'GET'],
|
||||
['name' => 'api#get_options', 'url' => '/get/options/{formId}', 'verb' => 'GET'],
|
||||
['name' => 'api#get_votes', 'url' => '/get/votes/{formId}', 'verb' => 'GET'],
|
||||
['name' => 'api#get_shares', 'url' => '/get/shares/{formId}', 'verb' => 'GET'],
|
||||
['name' => 'api#get_event', 'url' => '/get/event/{formId}', 'verb' => 'GET'],
|
||||
['name' => 'api#get_forms', 'url' => '/get/forms', 'verb' => 'GET'],
|
||||
|
@ -51,6 +50,7 @@ return [
|
|||
['name' => 'api#deleteQuestion', 'url' => 'api/v1/question/{id}', 'verb' => 'DELETE'],
|
||||
['name' => 'api#newAnswer', 'url' => 'api/v1/answer/', 'verb' => 'POST'],
|
||||
['name' => 'api#deleteAnswer', 'url' => 'api/v1/answer/{id}', 'verb' => 'DELETE'],
|
||||
['name' => 'api#getSubmissions', 'url' => 'api/v1/submissions/{hash}', 'verb' => 'GET'],
|
||||
|
||||
['name' => 'system#get_site_users_and_groups', 'url' => '/get/siteusers', 'verb' => 'POST'],
|
||||
]
|
||||
|
|
|
@ -204,37 +204,6 @@ class ApiController extends Controller {
|
|||
return $grantAccessAs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read all votes of a form based on the form id
|
||||
* @NoAdminRequired
|
||||
* @param Integer $formId
|
||||
* @return Array
|
||||
*/
|
||||
public function getVotes($formId) {
|
||||
if (!\OC::$server->getUserSession()->getUser() instanceof IUser) {
|
||||
$currentUser = '';
|
||||
} else {
|
||||
$currentUser = \OC::$server->getUserSession()->getUser()->getUID();
|
||||
}
|
||||
|
||||
$event = $this->getEvent($formId);
|
||||
|
||||
$accessList = $this->convertAccessList($event['access']);
|
||||
|
||||
if ($event['owner'] == $currentUser) {
|
||||
$votesList = array();
|
||||
$votes = $this->voteMapper->findByForm($formId);
|
||||
|
||||
foreach ($votes as $voteElement) {
|
||||
$votesList[] = $voteElement->read();
|
||||
}
|
||||
|
||||
return $votesList;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Read an entire form based on form id
|
||||
* @NoAdminRequired
|
||||
|
@ -352,7 +321,6 @@ class ApiController extends Controller {
|
|||
'grantedAs' => $this->grantAccessAs($event, $shares),
|
||||
'mode' => $mode,
|
||||
'event' => $event,
|
||||
'votes' => $this->getVotes($event['id']),
|
||||
'shares' => $shares,
|
||||
'options' => [
|
||||
'formQuizQuestions' => $this->getQuestions($event['id'])
|
||||
|
@ -650,4 +618,28 @@ class ApiController extends Controller {
|
|||
//TODO useful response
|
||||
return new Http\JSONResponse($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
*/
|
||||
public function getSubmissions(string $hash): Http\JSONResponse {
|
||||
try {
|
||||
$form = $this->eventMapper->findByHash($hash);
|
||||
} catch (IMapperException $e) {
|
||||
return new Http\JSONResponse([], Http::STATUS_BAD_REQUEST);
|
||||
}
|
||||
|
||||
if ($form->getOwner() !== $this->userId) {
|
||||
return new Http\JSONResponse([], Http::STATUS_FORBIDDEN);
|
||||
}
|
||||
|
||||
$votes = $this->voteMapper->findByForm($form->getId());
|
||||
|
||||
$result = [];
|
||||
foreach ($votes as $vote) {
|
||||
$result[] = $vote->read();
|
||||
}
|
||||
|
||||
return new Http\JSONResponse($result);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,9 +41,8 @@ class VoteMapper extends QBMapper {
|
|||
/**
|
||||
* @param int $formId
|
||||
* @throws \OCP\AppFramework\Db\DoesNotExistException if not found
|
||||
* @return Comment[]
|
||||
* @return Vote[]
|
||||
*/
|
||||
|
||||
public function findByForm(int $formId): array {
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
|
||||
|
@ -55,7 +54,7 @@ class VoteMapper extends QBMapper {
|
|||
|
||||
return $this->findEntities($qb);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param int $formId
|
||||
* @throws \OCP\AppFramework\Db\DoesNotExistException if not found
|
||||
|
|
|
@ -60,6 +60,7 @@ import json2csvParser from 'json2csv'
|
|||
import axios from '@nextcloud/axios'
|
||||
import LoadingOverlay from '../components/_base-LoadingOverlay'
|
||||
import ViewsMixin from '../mixins/ViewsMixin'
|
||||
import { generateUrl } from '@nextcloud/router'
|
||||
|
||||
import AppContent from '@nextcloud/vue/dist/Components/AppContent'
|
||||
export default {
|
||||
|
@ -123,7 +124,7 @@ export default {
|
|||
methods: {
|
||||
loadForms() {
|
||||
this.loading = true
|
||||
axios.get(OC.generateUrl('apps/forms/get/votes/' + this.$route.params.hash))
|
||||
axios.get(generateUrl('apps/forms/api/v1/submissions/{hash}', { hash: this.$route.params.hash }))
|
||||
.then((response) => {
|
||||
if (response.data == null) {
|
||||
this.votes = null
|
||||
|
|
Loading…
Reference in a new issue