123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377 |
- <?php
- session_start();
- require_once '../classes/Archivos.php';
- require_once '../classes/SGI.php';
- require_once '../include/bd_pdo.php';
- if(!isset($_POST['tipo'])){
- $return['error'] = 'Error! No se recibieron los datos.';
- } else {
- switch ($_POST['tipo']) {
- case 1: //Datos Principales
- switch ($_POST['accion']) {
- case 1: //Select
- $users = SGI::clavesAlumno($pdo, $_SESSION['usuario_id']);
- if(count($users) == 0)
- $return['error'] = 'No se obtuvo acceso a los datos del usuario';
- else {
- $return['nombre'] = $users[0]['Usuario_nombre'];
- $return['apellidos'] = $users[0]['Usuario_apellidos'];
- $return['curp'] = $users[0]['Usuario_curp'];
- switch($users[0]['EstadoAlumno_id']){
- case 1: $return['estatus'] = 'Alumno'; break;
- case 2: $return['estatus'] = 'Exalumno'; break;
- case 4: $return['estatus'] = 'Egresado'; break;
- }
- $carreras = '';
- foreach ($users as $user){
- $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>';
- }
- $return['carreras'] = $carreras;
- $validando = SGI::validacionDatosAlumno($pdo, $_SESSION['usuario_id']);
- $return['validacion'] = $validando;
- if ($validando){
- $datos = SGI::checkDatosAlumno($pdo, $_SESSION['usuario_id']);
- if(count($datos) == 0)
- $return['msg'] = '';
- else {
- $return['msg'] = '<div class="d-flex flex-column">
- <div>La actualización se encuentra en proceso de autorización con los siguientes datos:</div>
- <div class="indivisa-text-bold-italic">' . $datos['Usuario_nombre_new'] . ' ' . $datos['Usuario_apellidos_new'] . '</div>
- <div><span>CURP: </span><span class="indivisa-text-bold-italic">' . $datos['Usuario_curp_new'] . '</span></div>
- </div>';
- }
- }
- }
- break;
- case 2: //Update
- 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']))
- $return['error'] = 'No fue posible modificar tu información';
- else
- $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';
- break;
- }
- break;
- case 2: //Semblanza
- switch ($_POST['accion']) {
- case 1: //Select
- $return['acerca'] = SGI::semblanzaAlumno($pdo, $_SESSION['usuario_id']);
- break;
- case 2: //Update
- if(SGI::actualizaSemblanzaAlumno($pdo, filter_var($_POST['acerca'], FILTER_SANITIZE_STRING), $_SESSION['usuario_id']))
- $return['error'] = 'No fue posible actualizar tu semblanza';
- else
- $return['ok'] = 'Se actualizó correctamente tu semblanza';
- break;
- }
- break;
- case 3: //Redes
- switch ($_POST['accion']) {
- case 1: //Select
- $contactos = SGI::contactosAlumno($pdo, $_SESSION['usuario_id']);
- $emergencia = SGI::emergenciaAlumno($pdo, $_SESSION['usuario_id']);
- if(count($contactos) == 0 && count($emergencia) == 0){
- $return['html'] = '';
- } else {
- $redes = getRedes($pdo);
- $html = '';
- foreach ($redes as $red){
- $datos = '';
- if ($red['TipoContacto_id'] == 0){
- if (count($emergencia) > 0){
- foreach ($emergencia as $emer){
- $datos .= '<li><div><label>' . $emer['ContactoEmergencia_tel'] . '</label><span>' . $emer['ContactoEmergencia_nombre'] . '</span></div></li>';
- }
- $html .= '<button type="button" class="iconRedes" data-toggle="popover" data-trigger="focus" data-html="true" title="' . $red['TipoContacto_desc'] . '" data-placement="auto"
- data-content="<ul>' . $datos . '</ul>"><i class="' . $red['TipoContacto_icono'] . '"></i></button>';
- }
- } else {
- if (!is_bool(array_search($red['TipoContacto_id'], array_column($contactos, 'TipoContacto_id')))) {
- $keys = array_keys(array_column($contactos, 'TipoContacto_id'), $red['TipoContacto_id']);
- $datos = '';
- foreach ($keys as $key){
- if ($red['TipoContacto_id'] == 2) { //Sólo Código Postal
- $datos .= '<li><div><label>' . $contactos[$key]['Contacto_valor'] . ', ' . $contactos[$key]['SubtipoContacto_desc'] . '</label></div></li>';
- } else {
- $datos .= '<li><div><label>' . $contactos[$key]['Contacto_valor'] . '</label><span>';
- if (!is_null($contactos[$key]['SubtipoContacto_desc']))
- $datos .= $contactos[$key]['SubtipoContacto_desc'] . ' - ';
- $datos .= $contactos[$key]['PerfilContacto_desc'] . '</span></div></li>';
- }
- }
- $html .= '<button type="button" class="iconRedes" data-toggle="popover" data-trigger="focus" data-html="true" title="' . $red['TipoContacto_desc'] . '" data-placement="auto"
- data-content="<ul>' . $datos . '</ul>"><i class="' . $red['TipoContacto_icono'] . '"></i></button>';
- }
- }
- }
- $return['html'] = $html;
- }
- break;
- case 2: //Add
- $agregado = false;
- $msg = '';
- if ($_POST['red'] != 0)
- $agregado = SGI::agregaContacto($pdo, $_POST['red'], $_POST['dato'], $_POST['uso'], $_SESSION['usuario_id'], $_POST['subtipostatus'], $_POST['subtipo']);
- else {
- $existe = SGI::emergenciaAlumno($pdo, $_SESSION['usuario_id']);
- if (count($existe) == 0)
- $agregado = SGI::agregaContactoEmergencia($pdo, $_POST['dato'], filter_var($_POST['nombre'], FILTER_SANITIZE_STRING), $_SESSION['usuario_id']);
- else
- $msg = 'Únicamente puedes agregar un contacto de emergencia';
- }
- if(!$agregado){
- if (!empty ($msg))
- $return['error'] = $msg;
- else
- $return['error'] = 'No fue posible agregar <span class="text-azul1">' . $_POST['dato'] . '</span>';
- } else
- $return['ok'] = 'Se agregó correctamente <span class="text-azul1">' . $_POST['dato'] . '</span>';
- break;
- case 3: //Sup
- $error = 0;
- foreach ($_POST['ids_redes'] as $red){
- $red = filter_var($red, FILTER_SANITIZE_NUMBER_INT);
- if (intval($red) == 0){
- if(!SGI::eliminaContactoEmergencia($pdo, $_SESSION['usuario_id']))
- $error++;
- } else {
- if(!SGI::eliminaContacto($pdo, $_SESSION['usuario_id'], $red))
- $error++;
- }
- }
- $total = count($_POST['ids_redes']);
- if ($error == 0) {
- if ($total == 1)
- $return['ok'] = 'Se eliminó de manera exitosa el dato o red';
- else
- $return['ok'] = 'Se eliminaron de manera exitosa los ' . $total . ' datos y/o redes';
- } else {
- if ($error == $total){
- if ($error == 1)
- $return['error'] = 'No fue posible eliminar el dato o red';
- else
- $return['error'] = 'No fue posible eliminar ningún dato o red';
- } else {
- if ($error == 1)
- $return['error'] = 'No fue posible eliminar un dato o red';
- else
- $return['error'] = 'No fue posible elimnar ' . $error . ' datos y/o redes';
- }
- }
- break;
- case 4: //SubtiposContacto
- $_POST['tipo_contacto'] = filter_var($_POST['tipo_contacto'], FILTER_SANITIZE_NUMBER_INT);
- $subtipos = SGI::getSubTipoContacto($pdo, $_POST['tipo_contacto']);
- if(count($subtipos) == 0)
- $return['error'] = 'No fue posible obtener los subtipos de contacto';
- else {
- $html = '';
- foreach($subtipos as $subtipo){
- $html .= '<li data-id="' . $subtipo['SubtipoContacto_id'] . '">' . $subtipo['SubtipoContacto_desc'] . '</li>';
- }
- $return['lista'] = $html;
- switch ($_POST['tipo_contacto']){
- case 1: $return['titulo'] = 'Tipo de teléfono'; $return['msg'] = 'Elige el tipo de teléfono'; break;
- case 2: $return['titulo'] = 'País'; $return['msg'] = 'Elige el país del código postal'; break;
- default : $return['titulo'] = ''; $return['msg'] = ''; break;
- }
- }
- break;
- case 5: //Lista para eliminar
- $contactos = SGI::contactosAlumno($pdo, $_SESSION['usuario_id']);
- $emergencia = SGI::emergenciaAlumno($pdo, $_SESSION['usuario_id']);
- if(count($contactos) == 0 && count($emergencia) == 0){
- $return['error'] = '<div class="text-white indivisa-text-bold">No fue posible obtener los datos de contacto</div>';
- } else {
- $redes = getRedes($pdo);
- $html = '';
- foreach ($redes as $red){
- if ($red['TipoContacto_id'] == 0){
- $datos = '';
- foreach ($emergencia as $emer){
- $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>';
- }
- if (!empty($datos)){
- $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>';
- }
- } else {
- if (!is_bool(array_search($red['TipoContacto_id'], array_column($contactos, 'TipoContacto_id')))) {
- $keys = array_keys(array_column($contactos, 'TipoContacto_id'), $red['TipoContacto_id']);
- $datos = '';
- foreach ($keys as $key){
- if ($red['TipoContacto_id'] == 2) { //Sólo Código Postal
- $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>';
- } else {
- $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> (';
- if (!is_null($contactos[$key]['SubtipoContacto_desc']))
- $datos .= $contactos[$key]['SubtipoContacto_desc'] . ' - ';
- $datos .= $contactos[$key]['PerfilContacto_desc'] . ')</div><span class="ing-basura"></span></li>';
- }
- }
- if (!empty($datos)){
- $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>';
- }
- }
- }
- }
- if (!empty($html))
- $html = '<div class="d-flex flex-column redes">' . $html . '</div>';
- $return['html'] = $html;
- }
- break;
- }
- break;
- case 4: //Intereses
- switch ($_POST['accion']) {
- case 1: //Select
- $stmt = $pdo->prepare('SELECT * FROM alu_fs_interes(:Usuario_id) ORDER BY "Interes_nombre"');
- $stmt->bindParam(':Usuario_id', $_SESSION['usuario_id']);
- if(!$stmt->execute()){
- print_r($stmt->errorInfo());
- $return['error'] = 'No fue posible obtener la descripción del usuario';
- } else {
- $intereses = $stmt->fetchAll();
- $profesionales = '';
- $personales = '';
- foreach ($intereses as $interes){
- if($interes['Interes_tipo'])
- $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>';
- else
- $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>';
- }
- $return['profesionales'] = $profesionales;
- $return['personales'] = $personales;
- }
- $stmt->closeCursor();
- $stmt = null;
- break;
- case 2: //Add
- $_POST['interes'] = filter_var($_POST['interes'], FILTER_SANITIZE_STRING);
- $_POST['tipo_interes'] = filter_var($_POST['tipo_interes'], FILTER_SANITIZE_NUMBER_INT);
- $stmt = $pdo->prepare('SELECT * FROM alu_fi_interes(:Interes_tipo,:Interes,:Usuario_id)');
- $stmt->bindParam(':Interes', $_POST['interes']);
- $stmt->bindParam(':Interes_tipo', $_POST['tipo_interes']);
- $stmt->bindParam(':Usuario_id', $_SESSION['usuario_id']);
- if(!$stmt->execute()){
- print_r($stmt->errorInfo());
- $return['error'] = 'No fue posible agregar el interés <span class="text-azul1">' . $_POST['interes'] . '</span>';
- }
- else
- $return['ok'] = 'Se agregó correctamente el interés <span class="text-azul1">' . $_POST['interes'] . '</span>';
- $stmt->closeCursor();
- $stmt = null;
- break;
- case 3: //Sup
- $error = 0;
- foreach ($_POST['ids_intereses'] as $interes){
- $interes = filter_var($interes, FILTER_SANITIZE_NUMBER_INT);
- $stmt = $pdo->prepare('SELECT * FROM alu_fd_interes(:Interes_id, :Usuario_id)');
- $stmt->bindParam(':Interes_id', $interes);
- $stmt->bindParam(':Usuario_id', $_SESSION['usuario_id']);
- if(!$stmt->execute()){
- print_r($stmt->errorInfo());
- $error++;
- }
- $stmt->closeCursor();
- $stmt = null;
- }
- $total = count($_POST['ids_intereses']);
- if ($error == 0) {
- if ($total == 1)
- $return['ok'] = 'Se eliminó de manera exitosa el interes';
- else
- $return['ok'] = 'Se eliminaron de manera exitosa los ' . $total . ' intereses';
- } else {
- if ($error == $total){
- if ($error == 1)
- $return['error'] = 'No fue posible eliminar el interés';
- else
- $return['error'] = 'No fue posible eliminar ningún interés';
- } else {
- if ($error == 1)
- $return['error'] = 'No fue posible eliminar un interés';
- else
- $return['error'] = 'No fue posible elimnar ' . $error . ' intereses';
- }
- }
- break;
- }
- break;
- case 5: //Foto
- switch ($_POST['accion']) {
- case 1: //Select
- $foto = SGI::fotoAlumno($pdo, $_SESSION['usuario_id']);
- $es_admin = SGI::esAdministrativo($pdo, $_SESSION['usuario_id']);
- if (count($es_admin) == 0 || (isset($es_admin['estatus']) && $es_admin['estatus'] == 'BAJA')){
- if (str_contains($foto, 'nico'))
- $return['foto'] = 'img/' . $foto;
- else
- $return['foto'] = 'archivos/alumnos/' . $idalumno . '/' . $foto;
- } else {
- if (str_contains($foto, 'nico'))
- $return['foto'] = 'img/' . $foto;
- else
- $return['foto'] = 'http://atenea.lci.ulsa.mx/img/fotos/'. $foto;
- }
- break;
- case 2: //Actualiza Foto
- $es_admin = SGI::esAdministrativo($pdo, $_SESSION['usuario_id']);
- if (count($es_admin) == 0 || (isset($es_admin['estatus']) && $es_admin['estatus'] == 'BAJA')){
- $anterior = SGI::fotoAlumno($pdo, $_SESSION['usuario_id']);
- $cargada = true;
- $nombre = '';
- if(!boolval($_POST['limpia'])) {
- $extension = substr($_FILES['archivo']['name'][0], strrpos($_FILES['archivo']['name'][0], '.'));
- $nombre = 'foto_' . $_SESSION['usuario_id'] . '_' . uniqid() . $extension;
- if (!Archivos::existeCapeta('archivos/alumnos/' . $_SESSION['usuario_id']))
- Archivos::creaCarpeta('archivos/alumnos/' . $_SESSION['usuario_id']);
- if (!Archivos::agregaArchivo($_FILES['archivo']['tmp_name'][0], 'archivos/alumnos/' . $_SESSION['usuario_id'], $nombre))
- $cargada = false;
- }
- if($cargada) {
- if ($anterior != SGI::$foto_pefil)
- Archivos::eliminaArchivo('', $anterior);
- if(boolval($_POST['limpia']))
- $cargada = SGI::actualizaFotoAlumno($pdo, $_SESSION['usuario_id']);
- else
- $cargada = SGI::actualizaFotoAlumno($pdo, $_SESSION['usuario_id'], $nombre);
- if (!$cargada)
- $return['error'] = 'No fue posible actualizar la foto';
- else
- $return['ok'] = 'Se cambió correctamente la foto';
- } else
- $return['error'] = 'No fue posible subir la foto';
- } else
- $return['error'] = 'Al ser colaborador de la facultad, tu foto deberás cambiarla en APSA';
- break;
- }
- break;
- }
- }
- $return['json'] = json_encode($return);
- echo json_encode($return);
- function getRedes($pdo){
- $redes = SGI::getRedes($pdo);
- if (count($redes) > 0){
- array_push($redes, array('TipoContacto_id' => 0, 'TipoContacto_desc' => 'Contacto de Emergencia', 'TipoContacto_icono' => 'fa-solid fa-book-medical', 'SubtipoContacto' => false));
- $temp = array();
- $key = array_search(2, array_column($redes, 'TipoContacto_id'));
- $temp = $redes[$key];
- unset($redes[$key]);
- array_unshift($redes, $temp);
- $key = array_search(3, array_column($redes, 'TipoContacto_id'));
- $temp = $redes[$key];
- unset($redes[$key]);
- array_unshift($redes, $temp);
- $key = array_search(1, array_column($redes, 'TipoContacto_id'));
- $temp = $redes[$key];
- unset($redes[$key]);
- array_unshift($redes, $temp);
- $key = array_search(0, array_column($redes, 'TipoContacto_id'));
- $temp = $redes[$key];
- unset($redes[$key]);
- array_unshift($redes, $temp);
- }
- return $redes;
- }
|