Mostrar respuestas de todos los usuarios
This commit is contained in:
parent
393020b747
commit
3322239d42
@ -76,7 +76,7 @@ $routes->group('admin', ['filter' => 'admin_filter'], static function ($routes)
|
|||||||
$routes->get('encuesta/eliminar/(:segment)', 'Admin::eliminarEncuesta/$1', ['as' => 'admin_encuesta_eliminar']);
|
$routes->get('encuesta/eliminar/(:segment)', 'Admin::eliminarEncuesta/$1', ['as' => 'admin_encuesta_eliminar']);
|
||||||
$routes->get('respuestas/', 'Admin::respuestas', ['as' => 'admin_respuestas']);
|
$routes->get('respuestas/', 'Admin::respuestas', ['as' => 'admin_respuestas']);
|
||||||
$routes->get('respuesta/(:segment)/(:segment)', 'Admin::respuesta/$1/$2', ['as' => 'admin_respuesta']);
|
$routes->get('respuesta/(:segment)/(:segment)', 'Admin::respuesta/$1/$2', ['as' => 'admin_respuesta']);
|
||||||
$routes->get('respuestas/(:segment)', 'Admin::respuestasEncuesta/$1', ['as' => 'admin_respuestas_encuesta']);
|
$routes->get('encuesta/(:segment)/respuestas', 'Admin::respuestasEncuesta/$1', ['as' => 'admin_respuestas_encuesta']);
|
||||||
|
|
||||||
// PREGUNTAS
|
// PREGUNTAS
|
||||||
$routes->match(['get', 'post'], 'encuesta/(:segment)/pregunta/', 'Admin::nuevaPregunta/$1', ['as' => 'admin_pregunta_nueva']);
|
$routes->match(['get', 'post'], 'encuesta/(:segment)/pregunta/', 'Admin::nuevaPregunta/$1', ['as' => 'admin_pregunta_nueva']);
|
||||||
|
@ -312,7 +312,39 @@ class Admin extends BaseController
|
|||||||
|
|
||||||
public function respuestasEncuesta($surveyId)
|
public function respuestasEncuesta($surveyId)
|
||||||
{
|
{
|
||||||
echo 'todas las respuestas de esta encuesta';
|
if (!$respuestas = model(RespuestaModel::class)->getRespuestasAll($surveyId)) {
|
||||||
|
return redirect()->route('admin_respuestas')->with('msg', array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'body' => 'No se encontraron respuestas de para esta encuesta.',
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Agrupar respuestas por usuario
|
||||||
|
$respuestas = array_reduce($respuestas, function (array $accumulator, array $element) {
|
||||||
|
$accumulator[$element['user_id']][] = $element;
|
||||||
|
return $accumulator;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
// reset array keys
|
||||||
|
$respuestas = array_values($respuestas);
|
||||||
|
|
||||||
|
// Agrupar respuestas de opción múltiple
|
||||||
|
foreach ($respuestas as &$respuesta) {
|
||||||
|
$respuesta = array_reduce($respuesta, function (array $accumulator, array $element) {
|
||||||
|
$accumulator[$element['question_id']][] = $element;
|
||||||
|
return $accumulator;
|
||||||
|
}, []);
|
||||||
|
$respuesta = array_values($respuesta);
|
||||||
|
}
|
||||||
|
unset($respuesta);
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'tituloEncuesta' => model(EncuestaModel::class)->find($surveyId)['title'],
|
||||||
|
'preguntas' => model(PreguntaModel::class)->getPreguntas($surveyId),
|
||||||
|
'respuestas' => $respuestas,
|
||||||
|
];
|
||||||
|
// dd($respuestas);
|
||||||
|
return view('Admin/respuestasGenerales', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function respuesta($surveyId, $userId)
|
public function respuesta($surveyId, $userId)
|
||||||
|
@ -29,4 +29,15 @@ class RespuestaModel extends Model
|
|||||||
->where($where)
|
->where($where)
|
||||||
->findAll();
|
->findAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getRespuestasAll($survey_id)
|
||||||
|
{
|
||||||
|
$db = db_connect();
|
||||||
|
$where = 'answers.survey_id = ' . $db->escape($survey_id);
|
||||||
|
return $this
|
||||||
|
->select('answers.id, answers.survey_id, answers.user_id, answers.answer,answers.question_id, questions.question, questions.type')
|
||||||
|
->join('questions', 'answers.question_id = questions.id')
|
||||||
|
->where($where)
|
||||||
|
->findAll();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,78 @@
|
|||||||
|
<?= $this->extend('templates/baseAdmin') ?>
|
||||||
|
|
||||||
|
<?= $this->section('content') ?>
|
||||||
|
|
||||||
|
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
|
||||||
|
<script src="https://cdn.datatables.net/1.12.1/js/jquery.dataTables.min.js"></script>
|
||||||
|
<script src="https://cdn.datatables.net/1.12.1/js/dataTables.bootstrap5.min.js"></script>
|
||||||
|
|
||||||
|
<h1><?= $tituloEncuesta ?></h1>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<table id="table-solicitudes" class="table table-bordered table-striped">
|
||||||
|
<thead>
|
||||||
|
<th>ID usuario</th>
|
||||||
|
<?php foreach ($preguntas as $pregunta) : ?>
|
||||||
|
<th><?= $pregunta['question'] ?></th>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<?php foreach ($respuestas as $user) : ?>
|
||||||
|
<tr>
|
||||||
|
<td><?= $user[0][0]['user_id'] ?></td>
|
||||||
|
<?php foreach ($user as $respuesta) : ?>
|
||||||
|
<!-- Respuestas de opción múltiple -->
|
||||||
|
<?php if ($respuesta[0]['type'] === '3') : ?>
|
||||||
|
<td>
|
||||||
|
<?php foreach ($respuesta as $opcion) : ?>
|
||||||
|
<?= $opcion['answer'] ?>
|
||||||
|
<br>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</td>
|
||||||
|
<?php else : ?>
|
||||||
|
<td><?= $respuesta[0]['answer'] ?></td>
|
||||||
|
<?php endif ?>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach ?>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
let table = new DataTable('#table-solicitudes', {
|
||||||
|
'searching': true,
|
||||||
|
'ordering': true,
|
||||||
|
'language': {
|
||||||
|
"decimal": "",
|
||||||
|
"emptyTable": "No hay información",
|
||||||
|
"info": "Mostrando _START_ a _END_ de _TOTAL_ registros",
|
||||||
|
"infoEmpty": "Mostrando 0 to 0 of 0 registros",
|
||||||
|
"infoFiltered": "(Filtrado de _MAX_ total registros)",
|
||||||
|
"infoPostFix": "",
|
||||||
|
"thousands": ",",
|
||||||
|
"lengthMenu": "Mostrar _MENU_ registros",
|
||||||
|
"loadingRecords": "Cargando...",
|
||||||
|
"processing": "Procesando...",
|
||||||
|
"search": "Buscar:",
|
||||||
|
"zeroRecords": "No se encontraron resultados",
|
||||||
|
"paginate": {
|
||||||
|
"first": "Primero",
|
||||||
|
"last": "Ultimo",
|
||||||
|
"next": "Siguiente",
|
||||||
|
"previous": "Anterior"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'order': [],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<?= $this->endSection() ?>
|
Loading…
x
Reference in New Issue
Block a user