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#write_form', 'url' => '/write/form', 'verb' => 'POST'],
|
||||||
['name' => 'api#get_form', 'url' => '/get/form/{formIdOrHash}', 'verb' => 'GET'],
|
['name' => 'api#get_form', 'url' => '/get/form/{formIdOrHash}', 'verb' => 'GET'],
|
||||||
['name' => 'api#get_options', 'url' => '/get/options/{formId}', '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_shares', 'url' => '/get/shares/{formId}', 'verb' => 'GET'],
|
||||||
['name' => 'api#get_event', 'url' => '/get/event/{formId}', 'verb' => 'GET'],
|
['name' => 'api#get_event', 'url' => '/get/event/{formId}', 'verb' => 'GET'],
|
||||||
['name' => 'api#get_forms', 'url' => '/get/forms', '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#deleteQuestion', 'url' => 'api/v1/question/{id}', 'verb' => 'DELETE'],
|
||||||
['name' => 'api#newAnswer', 'url' => 'api/v1/answer/', 'verb' => 'POST'],
|
['name' => 'api#newAnswer', 'url' => 'api/v1/answer/', 'verb' => 'POST'],
|
||||||
['name' => 'api#deleteAnswer', 'url' => 'api/v1/answer/{id}', 'verb' => 'DELETE'],
|
['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'],
|
['name' => 'system#get_site_users_and_groups', 'url' => '/get/siteusers', 'verb' => 'POST'],
|
||||||
]
|
]
|
||||||
|
|
|
@ -204,37 +204,6 @@ class ApiController extends Controller {
|
||||||
return $grantAccessAs;
|
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
|
* Read an entire form based on form id
|
||||||
* @NoAdminRequired
|
* @NoAdminRequired
|
||||||
|
@ -352,7 +321,6 @@ class ApiController extends Controller {
|
||||||
'grantedAs' => $this->grantAccessAs($event, $shares),
|
'grantedAs' => $this->grantAccessAs($event, $shares),
|
||||||
'mode' => $mode,
|
'mode' => $mode,
|
||||||
'event' => $event,
|
'event' => $event,
|
||||||
'votes' => $this->getVotes($event['id']),
|
|
||||||
'shares' => $shares,
|
'shares' => $shares,
|
||||||
'options' => [
|
'options' => [
|
||||||
'formQuizQuestions' => $this->getQuestions($event['id'])
|
'formQuizQuestions' => $this->getQuestions($event['id'])
|
||||||
|
@ -650,4 +618,28 @@ class ApiController extends Controller {
|
||||||
//TODO useful response
|
//TODO useful response
|
||||||
return new Http\JSONResponse($id);
|
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
|
* @param int $formId
|
||||||
* @throws \OCP\AppFramework\Db\DoesNotExistException if not found
|
* @throws \OCP\AppFramework\Db\DoesNotExistException if not found
|
||||||
* @return Comment[]
|
* @return Vote[]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function findByForm(int $formId): array {
|
public function findByForm(int $formId): array {
|
||||||
$qb = $this->db->getQueryBuilder();
|
$qb = $this->db->getQueryBuilder();
|
||||||
|
|
||||||
|
@ -55,7 +54,7 @@ class VoteMapper extends QBMapper {
|
||||||
|
|
||||||
return $this->findEntities($qb);
|
return $this->findEntities($qb);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $formId
|
* @param int $formId
|
||||||
* @throws \OCP\AppFramework\Db\DoesNotExistException if not found
|
* @throws \OCP\AppFramework\Db\DoesNotExistException if not found
|
||||||
|
|
|
@ -60,6 +60,7 @@ import json2csvParser from 'json2csv'
|
||||||
import axios from '@nextcloud/axios'
|
import axios from '@nextcloud/axios'
|
||||||
import LoadingOverlay from '../components/_base-LoadingOverlay'
|
import LoadingOverlay from '../components/_base-LoadingOverlay'
|
||||||
import ViewsMixin from '../mixins/ViewsMixin'
|
import ViewsMixin from '../mixins/ViewsMixin'
|
||||||
|
import { generateUrl } from '@nextcloud/router'
|
||||||
|
|
||||||
import AppContent from '@nextcloud/vue/dist/Components/AppContent'
|
import AppContent from '@nextcloud/vue/dist/Components/AppContent'
|
||||||
export default {
|
export default {
|
||||||
|
@ -123,7 +124,7 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
loadForms() {
|
loadForms() {
|
||||||
this.loading = true
|
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) => {
|
.then((response) => {
|
||||||
if (response.data == null) {
|
if (response.data == null) {
|
||||||
this.votes = null
|
this.votes = null
|
||||||
|
|
Loading…
Reference in a new issue