From 3322239d42676a7dd16376906d0fca7a644930dd Mon Sep 17 00:00:00 2001 From: Sergio Date: Mon, 5 Sep 2022 09:20:32 -0500 Subject: [PATCH] Mostrar respuestas de todos los usuarios --- app/Config/Routes.php | 2 +- app/Controllers/Admin.php | 34 ++++++++++- app/Models/RespuestaModel.php | 11 ++++ app/Views/Admin/respuestasGenerales.php | 78 +++++++++++++++++++++++++ 4 files changed, 123 insertions(+), 2 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index caf125e..f03f818 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -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('respuestas/', 'Admin::respuestas', ['as' => 'admin_respuestas']); $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 $routes->match(['get', 'post'], 'encuesta/(:segment)/pregunta/', 'Admin::nuevaPregunta/$1', ['as' => 'admin_pregunta_nueva']); diff --git a/app/Controllers/Admin.php b/app/Controllers/Admin.php index bde7d1f..932198d 100644 --- a/app/Controllers/Admin.php +++ b/app/Controllers/Admin.php @@ -312,7 +312,39 @@ class Admin extends BaseController 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) diff --git a/app/Models/RespuestaModel.php b/app/Models/RespuestaModel.php index 052faaa..87a5dda 100644 --- a/app/Models/RespuestaModel.php +++ b/app/Models/RespuestaModel.php @@ -29,4 +29,15 @@ class RespuestaModel extends Model ->where($where) ->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(); + } } diff --git a/app/Views/Admin/respuestasGenerales.php b/app/Views/Admin/respuestasGenerales.php index e69de29..d5ef6bd 100644 --- a/app/Views/Admin/respuestasGenerales.php +++ b/app/Views/Admin/respuestasGenerales.php @@ -0,0 +1,78 @@ +extend('templates/baseAdmin') ?> + +section('content') ?> + + + + + +

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
ID usuario
+ + +
+ +
+ +
+
+ + + +endSection() ?> \ No newline at end of file