registro_action.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. session_start();
  3. require_once '../classes/Concurso.php';
  4. require_once '../classes/Etapa.php';
  5. require_once '../classes/Proyecto.php';
  6. require_once '../classes/Usuario.php';
  7. require_once '../include/bd_pdo.php';
  8. $ajax = true;
  9. $msg = '';
  10. if(!isset($_POST['tipo'])){
  11. $return['error'] = 'Error! No se recibieron los datos.';
  12. } else {
  13. switch ($_POST['tipo']) {
  14. case 1: //Guarda registro
  15. $ajax = false;
  16. $registro = Etapa::getIdEtapa($pdo,'REGISTRO');
  17. $titulo = trim(filter_input(INPUT_POST, 'titulo'));
  18. $alumnos = json_decode($_POST['alumnos'],true);
  19. $asesores = json_decode($_POST['asesores'],true);
  20. $concurso = unserialize($_SESSION['EI_actual']);
  21. $proyecto = Proyecto::agregaProyecto($pdo, $titulo, $_POST['carrera'], $concurso->getId());
  22. if (count($proyecto) > 0){
  23. if (asignaAlumnos($pdo, $alumnos, $proyecto['idproyecto'], $concurso->getId())){
  24. if(asignaAsesores($pdo, $registro, $asesores, $proyecto['idproyecto'], $concurso->getId()))
  25. $msg = '?ok=0';
  26. else
  27. $msg = '?errorList=4';
  28. } else
  29. $msg = '?errorList=3';
  30. } else
  31. $msg = '?errorList=0';
  32. break;
  33. case 2: //Edita registro
  34. $ajax = false;
  35. break;
  36. }
  37. }
  38. if ($ajax){
  39. $return['json'] = json_encode($return);
  40. echo json_encode($return);
  41. } else
  42. header('Location: ../listado.php' . $msg);
  43. function asignaAlumnos($pdo, $integrantes, $proyecto, $concurso){
  44. $asignados = false;
  45. $alumnos = array();
  46. foreach ($integrantes as $integrante){
  47. if ($integrante['id'] != 'x') {
  48. $ids = explode('-',$integrante['id']);
  49. if ($ids[0] != 0){
  50. $usr = $ids[0];
  51. $rol = Usuario::getIdRol($pdo, 'ALUMNO');
  52. if (count($rol) > 0)
  53. if (!Usuario::tieneRol($pdo, $usr,$rol['idrol'], $concurso))
  54. Usuario::agregaUsuarioRol($pdo, $usr, $rol['idrol'], $concurso);
  55. } else
  56. $usr = Usuario::agregaUsuarioNuevoInterno($pdo, $ids[1], 'ALUMNO', $concurso);
  57. array_push($alumnos,$usr);
  58. } else {
  59. $usr = Usuario::agregaUsuarioNuevoExterno($pdo, $integrante['nombre'], $integrante['apellidos'], $integrante['carrera'], $integrante['email'], 'ALUMNO', $concurso);
  60. array_push($alumnos,$usr);
  61. }
  62. }
  63. if (count($alumnos) > 0){
  64. $error = false;
  65. foreach ($alumnos as $alumno){
  66. if (!Proyecto::asignaAlumno($pdo, $proyecto, $alumno))
  67. $error = true;
  68. }
  69. if (!$error)
  70. $asignados = true;
  71. else {
  72. Proyecto::eliminaAlumnosProyecto($pdo, $proyecto);
  73. Proyecto::eliminaProyecto($pdo, $proyecto);
  74. $asignados = false;
  75. }
  76. } else {
  77. Proyecto::eliminaProyecto($pdo, $proyecto);
  78. $asignados = false;
  79. }
  80. return $asignados;
  81. }
  82. function asignaAsesores($pdo, $etapa, $asesores, $proyecto, $concurso){
  83. $asignados = false;
  84. $docentes = array();
  85. foreach ($asesores as $asesor){
  86. if ($asesor['id'] != 'x') {
  87. $ids = explode('-',$asesor['id']);
  88. if ($ids[0] != 0){
  89. $usr = $ids[0];
  90. $rol = Usuario::getIdRol($pdo, 'ASESOR');
  91. if (count($rol) > 0)
  92. if (!Usuario::tieneRol($pdo, $usr,$rol['idrol'],$concurso))
  93. Usuario::agregaUsuarioRol($pdo, $usr, $rol['idrol'], $concurso);
  94. } else
  95. $usr = Usuario::agregaUsuarioNuevoInterno($pdo, $ids[1], 'ASESOR', $concurso);
  96. array_push($docentes,$usr);
  97. } else {
  98. $usr = Usuario::agregaUsuarioNuevoExterno($pdo, $asesor['nombre'], $asesor['apellidos'], '', $asesor['email'], 'ASESOR', $concurso);
  99. array_push($docentes,$usr);
  100. }
  101. }
  102. if (count($docentes) > 0){
  103. $error = false;
  104. foreach ($docentes as $docente){
  105. if (!Asignacion::agregaAsignacion($pdo, $etapa, $proyecto, $docente))
  106. $error = true;
  107. }
  108. if (!$error)
  109. $asignados = true;
  110. else {
  111. foreach ($docentes as $docente){
  112. Asignacion::eliminaAsignacionXDatos($pdo, $etapa, $proyecto, $docente);
  113. }
  114. Proyecto::eliminaAlumnosProyecto($pdo, $proyecto);
  115. Proyecto::eliminaProyecto($pdo, $proyecto);
  116. $asignados = false;
  117. }
  118. } else {
  119. Proyecto::eliminaAlumnosProyecto($pdo, $proyecto);
  120. Proyecto::eliminaProyecto($pdo, $proyecto);
  121. $asignados = false;
  122. }
  123. return $asignados;
  124. }