cuestionario_action.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <?php
  2. session_start();
  3. require_once '../classes/Proyecto.php';
  4. require_once '../include/bd_pdo.php';
  5. if(!isset($_POST['id']) && !isset($_POST['etapa'])){
  6. $return['error'] = 'Error! No se recibieron los datos.';
  7. } else {
  8. if(is_null($pdo)){
  9. $return['error'] = 'Error! No se pudieron obtener los datos';
  10. } else {
  11. $tipo = Proyecto::determinaAccionXEtapa($pdo, $_POST['etapa']);
  12. switch(intval($_POST['tipo'])){
  13. case 1: //Revisión-Evaluación
  14. $stmt = $pdo->prepare('Select * from cidit_fs_existenevaluacionesxetapa(:usr,:proyecto,:etapa)');
  15. $stmt->bindParam(':usr', $_SESSION['usuario_id']);
  16. $stmt->bindParam(':proyecto', $_POST['id']);
  17. $stmt->bindParam(':etapa', $_POST['etapa']);
  18. if(!$stmt->execute()){
  19. $return['error'] = 'No se pudo registrar tu ' . $tipo['accion'] .'. Inténtalo más tarde.';
  20. $stmt->closeCursor();
  21. $stmt = null;
  22. } else {
  23. $evalua_rs = $stmt->fetch();
  24. $stmt->closeCursor();
  25. $stmt = null; // cierra conexion
  26. if (!(bool)$evalua_rs['existe']){
  27. $idasignacion = Proyecto::existeAsignacion($pdo, $_SESSION['usuario_id'], $_POST['id'], $_POST['etapa']);
  28. if($idasignacion == -1){
  29. $return['error'] = 'No se pudo registrar tu ' . $tipo['accion'] . '. Inténtalo más tarde.';
  30. $stmt->closeCursor();
  31. $stmt = null;
  32. }else{
  33. if ($idasignacion == 0){
  34. $guarda = true;
  35. if(isset($_POST['rbs'])){
  36. $cont = 0;
  37. while ($cont < count($_POST['rbs']) && $guarda) {
  38. $stmt = $pdo->prepare('Select * from cidit_fi_valoracion(:usr,:proyecto,:preg,null)');
  39. $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
  40. $stmt->bindParam(':proyecto', $_POST['id']);
  41. $stmt->bindParam(':preg', $_POST['rbs'][$cont]);
  42. if(!$stmt->execute()){
  43. $guarda = false;
  44. } else {
  45. $cont++;
  46. }
  47. $stmt->closeCursor();
  48. $stmt = null;
  49. }
  50. }
  51. if(isset($_POST['txt'])){
  52. $cont = 0;
  53. while ($cont < count($_POST['txt']) && $guarda) {
  54. $txt = explode('|',$_POST['txt'][$cont]);
  55. $stmt = $pdo->prepare('Select * from cidit_fi_valoracion(:usr,:proyecto,:preg,:val)');
  56. $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
  57. $stmt->bindParam(':proyecto', $_POST['id']);
  58. $stmt->bindParam(':preg', $txt[0]);
  59. $stmt->bindParam(':val', $txt[1]);
  60. if(!$stmt->execute()){
  61. $guarda = false;
  62. } else {
  63. $cont++;
  64. }
  65. $stmt->closeCursor();
  66. $stmt = null;
  67. }
  68. }
  69. if ($guarda){
  70. $return['mensaje'] = '¡Gracias por haber ' . $tipo['preterito'] . ' el proyecto!';
  71. $return['icono'] = 'ing-finalistas';
  72. } else {
  73. $return['error'] = 'No se pudo registrar tu ' . $tipo['accion'] . '. Inténtalo más tarde.';
  74. $stmt = $pdo->prepare('Select * from cidit_fd_valoracion(:usr,:proyecto)');
  75. $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
  76. $stmt->bindParam(':proyecto', $_POST['id']);
  77. $stmt->execute();
  78. $stmt->closeCursor();
  79. $stmt = null;
  80. }
  81. } else {
  82. $guarda = true;
  83. if(isset($_POST['rbs'])){
  84. $cont = 0;
  85. while ($cont < count($_POST['rbs']) && $guarda) {
  86. $stmt = $pdo->prepare('Select * from cidit_fi_evaluacion(:asignacion,:preg,null)');
  87. $stmt->bindParam(":asignacion", $idasignacion);
  88. $stmt->bindParam(':preg', $_POST['rbs'][$cont]);
  89. if(!$stmt->execute()){
  90. $guarda = false;
  91. } else {
  92. $cont++;
  93. }
  94. $stmt->closeCursor();
  95. $stmt = null;
  96. }
  97. }
  98. if(isset($_POST['txt'])){
  99. $cont = 0;
  100. while ($cont < count($_POST['txt']) && $guarda) {
  101. $txt = explode('|',$_POST['txt'][$cont]);
  102. $stmt = $pdo->prepare('Select * from cidit_fi_evaluacion(:asignacion,:preg,:val)');
  103. $stmt->bindParam(":asignacion", $idasignacion);
  104. $stmt->bindParam(':preg', $txt[0]);
  105. $stmt->bindParam(':val', $txt[1]);
  106. if(!$stmt->execute()){
  107. $guarda = false;
  108. } else {
  109. $cont++;
  110. }
  111. $stmt->closeCursor();
  112. $stmt = null;
  113. }
  114. }
  115. if ($guarda){
  116. $return['mensaje'] = '¡Gracias por haber ' . $tipo['preterito'] . ' el proyecto!';
  117. $return['icono'] = 'ing-finalistas';
  118. $faltan = obtenerTotalFaltantes(Proyecto::obtenerProyectosFaltantes($pdo, $_SESSION['usuario_id'], $_POST['etapa']), $tipo);
  119. if(empty($faltan))
  120. $return['faltan'] = '0';
  121. else
  122. $return['faltan'] = $faltan;
  123. } else {
  124. $return['error'] = 'No se pudo registrar tu ' . $tipo['accion'] . '. Inténtalo más tarde.';
  125. $stmt = $pdo->prepare('Select * from cidit_fd_evaluacion(:asignacion)');
  126. $stmt->bindParam(":asignacion", $idasignacion);
  127. $stmt->execute();
  128. $stmt->closeCursor();
  129. $stmt = null;
  130. }
  131. }
  132. }
  133. } else {
  134. $return['error'] = 'Lo siento. Ya habías ' . $tipo['preterito'] . ' éste proyecto';
  135. }
  136. }
  137. break;
  138. case 2: //¿Ya fue revisado-evaluado?
  139. $stmt = $pdo->prepare('Select * from cidit_fs_existenevaluacionesxetapa(:usr,:cartel,:etapa)');
  140. $stmt->bindParam(':usr', $_SESSION['usuario_id']);
  141. $stmt->bindParam(':cartel', $_POST['id']);
  142. $stmt->bindParam(':etapa', $_POST['etapa']);
  143. if(!$stmt->execute()){
  144. $return['error'] = 'No se pudo registrar tu ' . $tipo['accion'] . '. Inténtalo más tarde.';
  145. $stmt->closeCursor();
  146. $stmt = null;
  147. } else {
  148. $evalua_rs = $stmt->fetch();
  149. $stmt->closeCursor();
  150. $stmt = null; // cierra conexion
  151. if ((bool)$evalua_rs["existe"]) {
  152. $return['mensaje'] = '¡Éste proyecto ya ha sido ' . $tipo['preterito'] . '!';
  153. $return['icono'] = 'ing-finalistas';
  154. } else
  155. $return['mensaje'] = 'ok';
  156. }
  157. break;
  158. case 3: //Faltantes
  159. $html = '';
  160. if (Proyecto::existeAsignacion($pdo, $_SESSION['usuario_id'], 0, $_POST['etapa']) > 0) {
  161. $html = '';
  162. $proyectos = Proyecto::obtenerProyectosFaltantes($pdo, $_SESSION['usuario_id'], $_POST['etapa']);
  163. $cont = 1;
  164. foreach ($proyectos as $proyecto){
  165. switch (mb_strtoupper(Etapa::getClaveEtapaXID($pdo, $_POST['etapa']))){
  166. case 'REVISION':
  167. $html .= '<div class="elemento d-flex flex-row align-items-center justify-content-start p-2" data-id="' . $proyecto['idproyecto'] . '" data-tipo="1" onclick="faltantes(this);"><div class="py-1 px-3 bg-azul' . $cont . '">' . $proyecto['clave'] . '</div><div class="pl-2">' . $proyecto['proyecto'] . '</div></div>';
  168. break;
  169. case 'EVALUACION':
  170. $html .= '<div class="elemento d-flex flex-row align-items-center justify-content-start p-2" data-id="' . $proyecto['idproyecto'] . '" data-tipo="1" onclick="faltantes(this);"><div class="py-1 px-3 bg-azul' . $cont . '">' . $proyecto['clave'] . '</div><div class="pl-2">'. $proyecto['proyecto'] . '</div></div>';
  171. break;
  172. }
  173. if ($cont == 5)
  174. $cont = 1;
  175. else
  176. $cont++;
  177. }
  178. if(empty($html))
  179. $return['mensaje'] = '0';
  180. else
  181. $return['mensaje'] = $html;
  182. $return['faltan'] = obtenerTotalFaltantes($proyectos, $tipo);
  183. } else
  184. $return['mensaje'] = '0';
  185. break;
  186. }
  187. }
  188. }
  189. $return['json'] = json_encode($return);
  190. echo json_encode($return);
  191. function obtenerTotalFaltantes($proyectos, $tipo){
  192. $msgFaltan = '';
  193. if (count($proyectos) > 0){
  194. $cont = count($proyectos);
  195. if ($cont == 1)
  196. $msgFaltan = 'Falta ' . $tipo['verbo'] .' 1 proyecto.';
  197. else
  198. $msgFaltan = 'Faltan ' . $cont .' proyectos por ' . $tipo['verbo'] . '.';
  199. }
  200. return $msgFaltan;
  201. }