home_action.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377
  1. <?php
  2. session_start();
  3. require_once '../classes/Archivos.php';
  4. require_once '../classes/SGI.php';
  5. require_once '../include/bd_pdo.php';
  6. if(!isset($_POST['tipo'])){
  7. $return['error'] = 'Error! No se recibieron los datos.';
  8. } else {
  9. switch ($_POST['tipo']) {
  10. case 1: //Datos Principales
  11. switch ($_POST['accion']) {
  12. case 1: //Select
  13. $users = SGI::clavesAlumno($pdo, $_SESSION['usuario_id']);
  14. if(count($users) == 0)
  15. $return['error'] = 'No se obtuvo acceso a los datos del usuario';
  16. else {
  17. $return['nombre'] = $users[0]['Usuario_nombre'];
  18. $return['apellidos'] = $users[0]['Usuario_apellidos'];
  19. $return['curp'] = $users[0]['Usuario_curp'];
  20. switch($users[0]['EstadoAlumno_id']){
  21. case 1: $return['estatus'] = 'Alumno'; break;
  22. case 2: $return['estatus'] = 'Exalumno'; break;
  23. case 4: $return['estatus'] = 'Egresado'; break;
  24. }
  25. $carreras = '';
  26. foreach ($users as $user){
  27. $carreras .= '<div class="d-flex justify-content-start align-items-start align-items-sm-center"><div class="num">' . $user['Usuario_claveULSA'] . '</div><div>' . $user['Carrera_desc'] . '</div></div>';
  28. }
  29. $return['carreras'] = $carreras;
  30. $validando = SGI::validacionDatosAlumno($pdo, $_SESSION['usuario_id']);
  31. $return['validacion'] = $validando;
  32. if ($validando){
  33. $datos = SGI::checkDatosAlumno($pdo, $_SESSION['usuario_id']);
  34. if(count($datos) == 0)
  35. $return['msg'] = '';
  36. else {
  37. $return['msg'] = '<div class="d-flex flex-column">
  38. <div>La actualización se encuentra en proceso de autorización con los siguientes datos:</div>
  39. <div class="indivisa-text-bold-italic">' . $datos['Usuario_nombre_new'] . ' ' . $datos['Usuario_apellidos_new'] . '</div>
  40. <div><span>CURP: </span><span class="indivisa-text-bold-italic">' . $datos['Usuario_curp_new'] . '</span></div>
  41. </div>';
  42. }
  43. }
  44. }
  45. break;
  46. case 2: //Update
  47. if(!SGI::actualizaDatosAlumno($pdo, filter_var($_POST['nombre'], FILTER_SANITIZE_STRING), filter_var($_POST['apellidos'], FILTER_SANITIZE_STRING), filter_var($_POST['curp'], FILTER_SANITIZE_STRING), $_SESSION['usuario_id']))
  48. $return['error'] = 'No fue posible modificar tu información';
  49. else
  50. $return['ok'] = 'Tus datos han sido envíados a <span class="text-azul1">validación</span><br />Aparecerá un signo <i class="ing-importante2 text-azul1"></i>, el cual desaparecerá una vez validada la información';
  51. break;
  52. }
  53. break;
  54. case 2: //Semblanza
  55. switch ($_POST['accion']) {
  56. case 1: //Select
  57. $return['acerca'] = SGI::semblanzaAlumno($pdo, $_SESSION['usuario_id']);
  58. break;
  59. case 2: //Update
  60. if(SGI::actualizaSemblanzaAlumno($pdo, filter_var($_POST['acerca'], FILTER_SANITIZE_STRING), $_SESSION['usuario_id']))
  61. $return['error'] = 'No fue posible actualizar tu semblanza';
  62. else
  63. $return['ok'] = 'Se actualizó correctamente tu semblanza';
  64. break;
  65. }
  66. break;
  67. case 3: //Redes
  68. switch ($_POST['accion']) {
  69. case 1: //Select
  70. $contactos = SGI::contactosAlumno($pdo, $_SESSION['usuario_id']);
  71. $emergencia = SGI::emergenciaAlumno($pdo, $_SESSION['usuario_id']);
  72. if(count($contactos) == 0 && count($emergencia) == 0){
  73. $return['html'] = '';
  74. } else {
  75. $redes = getRedes($pdo);
  76. $html = '';
  77. foreach ($redes as $red){
  78. $datos = '';
  79. if ($red['TipoContacto_id'] == 0){
  80. if (count($emergencia) > 0){
  81. foreach ($emergencia as $emer){
  82. $datos .= '<li><div><label>' . $emer['ContactoEmergencia_tel'] . '</label><span>' . $emer['ContactoEmergencia_nombre'] . '</span></div></li>';
  83. }
  84. $html .= '<button type="button" class="iconRedes" data-toggle="popover" data-trigger="focus" data-html="true" title="' . $red['TipoContacto_desc'] . '" data-placement="auto"
  85. data-content="<ul>' . $datos . '</ul>"><i class="' . $red['TipoContacto_icono'] . '"></i></button>';
  86. }
  87. } else {
  88. if (!is_bool(array_search($red['TipoContacto_id'], array_column($contactos, 'TipoContacto_id')))) {
  89. $keys = array_keys(array_column($contactos, 'TipoContacto_id'), $red['TipoContacto_id']);
  90. $datos = '';
  91. foreach ($keys as $key){
  92. if ($red['TipoContacto_id'] == 2) { //Sólo Código Postal
  93. $datos .= '<li><div><label>' . $contactos[$key]['Contacto_valor'] . ', ' . $contactos[$key]['SubtipoContacto_desc'] . '</label></div></li>';
  94. } else {
  95. $datos .= '<li><div><label>' . $contactos[$key]['Contacto_valor'] . '</label><span>';
  96. if (!is_null($contactos[$key]['SubtipoContacto_desc']))
  97. $datos .= $contactos[$key]['SubtipoContacto_desc'] . ' - ';
  98. $datos .= $contactos[$key]['PerfilContacto_desc'] . '</span></div></li>';
  99. }
  100. }
  101. $html .= '<button type="button" class="iconRedes" data-toggle="popover" data-trigger="focus" data-html="true" title="' . $red['TipoContacto_desc'] . '" data-placement="auto"
  102. data-content="<ul>' . $datos . '</ul>"><i class="' . $red['TipoContacto_icono'] . '"></i></button>';
  103. }
  104. }
  105. }
  106. $return['html'] = $html;
  107. }
  108. break;
  109. case 2: //Add
  110. $agregado = false;
  111. $msg = '';
  112. if ($_POST['red'] != 0)
  113. $agregado = SGI::agregaContacto($pdo, $_POST['red'], $_POST['dato'], $_POST['uso'], $_SESSION['usuario_id'], $_POST['subtipostatus'], $_POST['subtipo']);
  114. else {
  115. $existe = SGI::emergenciaAlumno($pdo, $_SESSION['usuario_id']);
  116. if (count($existe) == 0)
  117. $agregado = SGI::agregaContactoEmergencia($pdo, $_POST['dato'], filter_var($_POST['nombre'], FILTER_SANITIZE_STRING), $_SESSION['usuario_id']);
  118. else
  119. $msg = 'Únicamente puedes agregar un contacto de emergencia';
  120. }
  121. if(!$agregado){
  122. if (!empty ($msg))
  123. $return['error'] = $msg;
  124. else
  125. $return['error'] = 'No fue posible agregar <span class="text-azul1">' . $_POST['dato'] . '</span>';
  126. } else
  127. $return['ok'] = 'Se agregó correctamente <span class="text-azul1">' . $_POST['dato'] . '</span>';
  128. break;
  129. case 3: //Sup
  130. $error = 0;
  131. foreach ($_POST['ids_redes'] as $red){
  132. $red = filter_var($red, FILTER_SANITIZE_NUMBER_INT);
  133. if (intval($red) == 0){
  134. if(!SGI::eliminaContactoEmergencia($pdo, $_SESSION['usuario_id']))
  135. $error++;
  136. } else {
  137. if(!SGI::eliminaContacto($pdo, $_SESSION['usuario_id'], $red))
  138. $error++;
  139. }
  140. }
  141. $total = count($_POST['ids_redes']);
  142. if ($error == 0) {
  143. if ($total == 1)
  144. $return['ok'] = 'Se eliminó de manera exitosa el dato o red';
  145. else
  146. $return['ok'] = 'Se eliminaron de manera exitosa los ' . $total . ' datos y/o redes';
  147. } else {
  148. if ($error == $total){
  149. if ($error == 1)
  150. $return['error'] = 'No fue posible eliminar el dato o red';
  151. else
  152. $return['error'] = 'No fue posible eliminar ningún dato o red';
  153. } else {
  154. if ($error == 1)
  155. $return['error'] = 'No fue posible eliminar un dato o red';
  156. else
  157. $return['error'] = 'No fue posible elimnar ' . $error . ' datos y/o redes';
  158. }
  159. }
  160. break;
  161. case 4: //SubtiposContacto
  162. $_POST['tipo_contacto'] = filter_var($_POST['tipo_contacto'], FILTER_SANITIZE_NUMBER_INT);
  163. $subtipos = SGI::getSubTipoContacto($pdo, $_POST['tipo_contacto']);
  164. if(count($subtipos) == 0)
  165. $return['error'] = 'No fue posible obtener los subtipos de contacto';
  166. else {
  167. $html = '';
  168. foreach($subtipos as $subtipo){
  169. $html .= '<li data-id="' . $subtipo['SubtipoContacto_id'] . '">' . $subtipo['SubtipoContacto_desc'] . '</li>';
  170. }
  171. $return['lista'] = $html;
  172. switch ($_POST['tipo_contacto']){
  173. case 1: $return['titulo'] = 'Tipo de teléfono'; $return['msg'] = 'Elige el tipo de teléfono'; break;
  174. case 2: $return['titulo'] = 'País'; $return['msg'] = 'Elige el país del código postal'; break;
  175. default : $return['titulo'] = ''; $return['msg'] = ''; break;
  176. }
  177. }
  178. break;
  179. case 5: //Lista para eliminar
  180. $contactos = SGI::contactosAlumno($pdo, $_SESSION['usuario_id']);
  181. $emergencia = SGI::emergenciaAlumno($pdo, $_SESSION['usuario_id']);
  182. if(count($contactos) == 0 && count($emergencia) == 0){
  183. $return['error'] = '<div class="text-white indivisa-text-bold">No fue posible obtener los datos de contacto</div>';
  184. } else {
  185. $redes = getRedes($pdo);
  186. $html = '';
  187. foreach ($redes as $red){
  188. if ($red['TipoContacto_id'] == 0){
  189. $datos = '';
  190. foreach ($emergencia as $emer){
  191. $datos .= '<li data-id="0" data-tel="' . $emer['ContactoEmergencia_tel'] . '" data-desc="' . $emer['ContactoEmergencia_nombre'] . '" class="d-flex flex-row justify-content-start align-items-start red"></span><span class="ing-cancelar"></span><div class="flex-grow-1">' . $emer['ContactoEmergencia_tel'] . '</label><span> (' . $emer['ContactoEmergencia_nombre'] . ')</div><span class="ing-basura"></span></li>';
  192. }
  193. if (!empty($datos)){
  194. $html .= '<div class="titRed d-flex flex-row justify-content-start align-items-center mb-2"><span class="iconRed ' . $red['TipoContacto_icono'] . '"></span><label>' . $red['TipoContacto_desc'] . '</label></div><ul>' . $datos . '</ul>';
  195. }
  196. } else {
  197. if (!is_bool(array_search($red['TipoContacto_id'], array_column($contactos, 'TipoContacto_id')))) {
  198. $keys = array_keys(array_column($contactos, 'TipoContacto_id'), $red['TipoContacto_id']);
  199. $datos = '';
  200. foreach ($keys as $key){
  201. if ($red['TipoContacto_id'] == 2) { //Sólo Código Postal
  202. $datos .= '<li data-id="' . $contactos[$key]['Contacto_id'] . '" class="d-flex flex-row justify-content-start align-items-start red"></span><span class="ing-cancelar"></span><div class="flex-grow-1">' . $contactos[$key]['Contacto_valor'] . ', ' . $contactos[$key]['SubtipoContacto_desc'] . '</div><span class="ing-basura"></span></li>';
  203. } else {
  204. $datos .= '<li data-id="' . $contactos[$key]['Contacto_id'] . '" class="d-flex flex-row justify-content-start align-items-start red"></span><span class="ing-cancelar"></span><div class="flex-grow-1">' . $contactos[$key]['Contacto_valor'] . '</label><span> (';
  205. if (!is_null($contactos[$key]['SubtipoContacto_desc']))
  206. $datos .= $contactos[$key]['SubtipoContacto_desc'] . ' - ';
  207. $datos .= $contactos[$key]['PerfilContacto_desc'] . ')</div><span class="ing-basura"></span></li>';
  208. }
  209. }
  210. if (!empty($datos)){
  211. $html .= '<div class="titRed d-flex flex-row justify-content-start align-items-center mb-2"><span class="iconRed ' . $red['TipoContacto_icono'] . '"></span><label>' . $red['TipoContacto_desc'] . '</label></div><ul>' . $datos . '</ul>';
  212. }
  213. }
  214. }
  215. }
  216. if (!empty($html))
  217. $html = '<div class="d-flex flex-column redes">' . $html . '</div>';
  218. $return['html'] = $html;
  219. }
  220. break;
  221. }
  222. break;
  223. case 4: //Intereses
  224. switch ($_POST['accion']) {
  225. case 1: //Select
  226. $stmt = $pdo->prepare('SELECT * FROM alu_fs_interes(:Usuario_id) ORDER BY "Interes_nombre"');
  227. $stmt->bindParam(':Usuario_id', $_SESSION['usuario_id']);
  228. if(!$stmt->execute()){
  229. print_r($stmt->errorInfo());
  230. $return['error'] = 'No fue posible obtener la descripción del usuario';
  231. } else {
  232. $intereses = $stmt->fetchAll();
  233. $profesionales = '';
  234. $personales = '';
  235. foreach ($intereses as $interes){
  236. if($interes['Interes_tipo'])
  237. $profesionales .= '<li data-id="' . $interes['Interes_id'] . '" class="d-flex flex-row justify-content-start align-items-start interes col-sm-6"><span class="ing-cuadrado text-azul2"></span><span class="ing-cancelar"></span><div class="flex-grow-1">' . $interes['Interes_nombre'] . '</div><span class="ing-basura"></span></li>';
  238. else
  239. $personales .= '<li data-id="' . $interes['Interes_id'] . '" class="d-flex flex-row justify-content-start align-items-start interes col-sm-6"><span class="ing-cuadrado text-azul2"></span><span class="ing-cancelar"></span><div class="flex-grow-1">' . $interes['Interes_nombre'] . '</div><span class="ing-basura"></span></li>';
  240. }
  241. $return['profesionales'] = $profesionales;
  242. $return['personales'] = $personales;
  243. }
  244. $stmt->closeCursor();
  245. $stmt = null;
  246. break;
  247. case 2: //Add
  248. $_POST['interes'] = filter_var($_POST['interes'], FILTER_SANITIZE_STRING);
  249. $_POST['tipo_interes'] = filter_var($_POST['tipo_interes'], FILTER_SANITIZE_NUMBER_INT);
  250. $stmt = $pdo->prepare('SELECT * FROM alu_fi_interes(:Interes_tipo,:Interes,:Usuario_id)');
  251. $stmt->bindParam(':Interes', $_POST['interes']);
  252. $stmt->bindParam(':Interes_tipo', $_POST['tipo_interes']);
  253. $stmt->bindParam(':Usuario_id', $_SESSION['usuario_id']);
  254. if(!$stmt->execute()){
  255. print_r($stmt->errorInfo());
  256. $return['error'] = 'No fue posible agregar el interés <span class="text-azul1">' . $_POST['interes'] . '</span>';
  257. }
  258. else
  259. $return['ok'] = 'Se agregó correctamente el interés <span class="text-azul1">' . $_POST['interes'] . '</span>';
  260. $stmt->closeCursor();
  261. $stmt = null;
  262. break;
  263. case 3: //Sup
  264. $error = 0;
  265. foreach ($_POST['ids_intereses'] as $interes){
  266. $interes = filter_var($interes, FILTER_SANITIZE_NUMBER_INT);
  267. $stmt = $pdo->prepare('SELECT * FROM alu_fd_interes(:Interes_id, :Usuario_id)');
  268. $stmt->bindParam(':Interes_id', $interes);
  269. $stmt->bindParam(':Usuario_id', $_SESSION['usuario_id']);
  270. if(!$stmt->execute()){
  271. print_r($stmt->errorInfo());
  272. $error++;
  273. }
  274. $stmt->closeCursor();
  275. $stmt = null;
  276. }
  277. $total = count($_POST['ids_intereses']);
  278. if ($error == 0) {
  279. if ($total == 1)
  280. $return['ok'] = 'Se eliminó de manera exitosa el interes';
  281. else
  282. $return['ok'] = 'Se eliminaron de manera exitosa los ' . $total . ' intereses';
  283. } else {
  284. if ($error == $total){
  285. if ($error == 1)
  286. $return['error'] = 'No fue posible eliminar el interés';
  287. else
  288. $return['error'] = 'No fue posible eliminar ningún interés';
  289. } else {
  290. if ($error == 1)
  291. $return['error'] = 'No fue posible eliminar un interés';
  292. else
  293. $return['error'] = 'No fue posible elimnar ' . $error . ' intereses';
  294. }
  295. }
  296. break;
  297. }
  298. break;
  299. case 5: //Foto
  300. switch ($_POST['accion']) {
  301. case 1: //Select
  302. $foto = SGI::fotoAlumno($pdo, $_SESSION['usuario_id']);
  303. $es_admin = SGI::esAdministrativo($pdo, $_SESSION['usuario_id']);
  304. if (count($es_admin) == 0 || (isset($es_admin['estatus']) && $es_admin['estatus'] == 'BAJA')){
  305. if (str_contains($foto, 'nico'))
  306. $return['foto'] = 'img/' . $foto;
  307. else
  308. $return['foto'] = 'archivos/alumnos/' . $idalumno . '/' . $foto;
  309. } else {
  310. if (str_contains($foto, 'nico'))
  311. $return['foto'] = 'img/' . $foto;
  312. else
  313. $return['foto'] = 'http://atenea.lci.ulsa.mx/img/fotos/'. $foto;
  314. }
  315. break;
  316. case 2: //Actualiza Foto
  317. $es_admin = SGI::esAdministrativo($pdo, $_SESSION['usuario_id']);
  318. if (count($es_admin) == 0 || (isset($es_admin['estatus']) && $es_admin['estatus'] == 'BAJA')){
  319. $anterior = SGI::fotoAlumno($pdo, $_SESSION['usuario_id']);
  320. $cargada = true;
  321. $nombre = '';
  322. if(!boolval($_POST['limpia'])) {
  323. $extension = substr($_FILES['archivo']['name'][0], strrpos($_FILES['archivo']['name'][0], '.'));
  324. $nombre = 'foto_' . $_SESSION['usuario_id'] . '_' . uniqid() . $extension;
  325. if (!Archivos::existeCapeta('archivos/alumnos/' . $_SESSION['usuario_id']))
  326. Archivos::creaCarpeta('archivos/alumnos/' . $_SESSION['usuario_id']);
  327. if (!Archivos::agregaArchivo($_FILES['archivo']['tmp_name'][0], 'archivos/alumnos/' . $_SESSION['usuario_id'], $nombre))
  328. $cargada = false;
  329. }
  330. if($cargada) {
  331. if ($anterior != SGI::$foto_pefil)
  332. Archivos::eliminaArchivo('', $anterior);
  333. if(boolval($_POST['limpia']))
  334. $cargada = SGI::actualizaFotoAlumno($pdo, $_SESSION['usuario_id']);
  335. else
  336. $cargada = SGI::actualizaFotoAlumno($pdo, $_SESSION['usuario_id'], $nombre);
  337. if (!$cargada)
  338. $return['error'] = 'No fue posible actualizar la foto';
  339. else
  340. $return['ok'] = 'Se cambió correctamente la foto';
  341. } else
  342. $return['error'] = 'No fue posible subir la foto';
  343. } else
  344. $return['error'] = 'Al ser colaborador de la facultad, tu foto deberás cambiarla en APSA';
  345. break;
  346. }
  347. break;
  348. }
  349. }
  350. $return['json'] = json_encode($return);
  351. echo json_encode($return);
  352. function getRedes($pdo){
  353. $redes = SGI::getRedes($pdo);
  354. if (count($redes) > 0){
  355. array_push($redes, array('TipoContacto_id' => 0, 'TipoContacto_desc' => 'Contacto de Emergencia', 'TipoContacto_icono' => 'fa-solid fa-book-medical', 'SubtipoContacto' => false));
  356. $temp = array();
  357. $key = array_search(2, array_column($redes, 'TipoContacto_id'));
  358. $temp = $redes[$key];
  359. unset($redes[$key]);
  360. array_unshift($redes, $temp);
  361. $key = array_search(3, array_column($redes, 'TipoContacto_id'));
  362. $temp = $redes[$key];
  363. unset($redes[$key]);
  364. array_unshift($redes, $temp);
  365. $key = array_search(1, array_column($redes, 'TipoContacto_id'));
  366. $temp = $redes[$key];
  367. unset($redes[$key]);
  368. array_unshift($redes, $temp);
  369. $key = array_search(0, array_column($redes, 'TipoContacto_id'));
  370. $temp = $redes[$key];
  371. unset($redes[$key]);
  372. array_unshift($redes, $temp);
  373. }
  374. return $redes;
  375. }