You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Encuesta.php 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace App\Controllers;
  3. use App\Models\EncuestaModel;
  4. use App\Models\PreguntaModel;
  5. use App\Models\RespuestaModel;
  6. use App\Models\SurveyUserModel;
  7. use App\Models\UserModel;
  8. use phpDocumentor\Reflection\DocBlock\Tags\TagWithType;
  9. class Encuesta extends BaseController
  10. {
  11. public function encuesta($id)
  12. {
  13. if (!$encuesta = model(EncuestaModel::class)->find($id)) {
  14. throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound();
  15. }
  16. $data = [
  17. 'id' => $encuesta['id'],
  18. 'title' => $encuesta['title'],
  19. 'preguntas' => model(PreguntaModel::class)->getPreguntas($id),
  20. ];
  21. return view('Encuesta/template', $data);
  22. }
  23. public function submit($id)
  24. {
  25. $respuestaModel = model(RespuestaModel::class);
  26. $userId = user_id();
  27. $data = $this->request->getPost();
  28. $respuestas = [];
  29. foreach ($data as $questionId => $answer) {
  30. if (is_array($answer)) {
  31. foreach ($answer as $a) {
  32. $respuesta = [
  33. 'survey_id' => $id,
  34. 'user_id' => $userId,
  35. 'answer' => $a,
  36. 'question_id' => $questionId,
  37. ];
  38. array_push($respuestas, $respuesta);
  39. }
  40. } else {
  41. $respuesta = [
  42. 'survey_id' => $id,
  43. 'user_id' => $userId,
  44. 'answer' => $answer,
  45. 'question_id' => $questionId,
  46. ];
  47. array_push($respuestas, $respuesta);
  48. }
  49. // $answer = implode(chr(13), $answer);
  50. };
  51. if (!$respuestaModel->insertBatch($respuestas)) {
  52. return redirect()->back()
  53. ->with('msg', array(
  54. 'type' => 'danger',
  55. 'body' => 'No se pudo guardar la encuesta. Inténtalo nuevamente.'
  56. ));
  57. }
  58. // Registrar que usuario respondió encuesta
  59. $surveyUserModel = model(SurveyUserModel::class);
  60. $surveyUserModel->save([
  61. 'survey_id' => $id,
  62. 'user_id' => $userId,
  63. ]);
  64. return redirect()->route('home')->with('msg', array(
  65. 'type' => 'success',
  66. 'body' => 'Encuesta guardada correctamente'
  67. ));
  68. }
  69. public function userAnswered()
  70. {
  71. $surveyUserModel = model(SurveyUserModel::class);
  72. $encuestaId = 23;
  73. $userId = user_id();
  74. echo $surveyUserModel->alreadyAnswered($encuestaId, $userId);
  75. }
  76. }