123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- <?php
- session_start();
- require_once '../include/bd_pdo.php';
- require_once '../classes/Archivos.php';
- require_once '../classes/EventoInsignia.php';
- require_once '../classes/Fechas.php';
- if(!isset($_POST['tipo'])){
- $return['error'] = 'Error! No se recibieron los datos.';
- } else{
- date_default_timezone_set('America/Mexico_City');
- switch($_POST['tipo']){
- case 1: //SELECT ALL
- $_POST['year'] = intval(filter_var($_POST['year'], FILTER_SANITIZE_NUMBER_INT));
- $_POST['month'] = intval(filter_var($_POST['month'], FILTER_SANITIZE_NUMBER_INT));
- //if (($_POST['year'] . '-' . Fechas::dosDigitos($_POST['month'])) < '2023-04'){
- if (($_POST['year'] . '-' . Fechas::dosDigitos($_POST['month'])) < date('Y-m')){
- $eventos = array();
- $fechaIni = $_POST['year'] . '-' . Fechas::dosDigitos($_POST['month']) . '-01';
- $fechaFin = $_POST['year'] . '-' . Fechas::dosDigitos($_POST['month']) . '-' .cal_days_in_month(CAL_GREGORIAN, Fechas::dosDigitos($_POST['month']), $_POST['year']);
- $registros = EventoInsignia::getRegistroEvento($pdo, $_SESSION['usuario_id'], null, $fechaIni, $fechaFin);
- if (count($registros) > 0){
- $insignias = array_column($registros, 'insignia_id');
- $eventos = EventoInsignia::getDatosEventos($pdo, $_POST['month'], $_POST['year']);
- $eventos = depuraEventosAnteriores($eventos, $insignias);
- }
- if (count($eventos) == 0) {
- $return['html'] = '<div class="msgBox d-flex flex-row justify-content-center align-items-center mt-5">
- <img src="img/triangulos.svg" class="imgBoxIzq" />
- <img src="img/triangulos.svg" class="imgBoxDer" />
- <hr class="hrArriba">
- <hr class="hrAbajo">
- <div class="d-flex flex-column justify-content-center align-items-center display-5 text-center p-4">
- <div><span class="text-azul1 mx-1">NO</span>participaste en ningún evento de éste mes</div>
- </div>
- </div>';
- } else {
- $html = '';
- if (count($eventos) > 1) {
- reset($eventos);
- while ($evento = current($eventos)) {
- $index = key($eventos);
- $fechas = EventoInsignia::getFechasRomanizadas($evento['fechas'], $evento['periodicidad'], $_POST['year'] . '-' . Fechas::dosDigitos($_POST['month']), true);
- $eventos[$index]['texto'] = $fechas['texto'];
- $eventos[$index]['horario'] = $fechas['horario'];
- $eventos[$index]['horarioTemp'] = $fechas['horarioTemp'];
- next($eventos);
- }
- usort($eventos, function($a, $b) {
- $retval = $a['dia'] <=> $b['dia'];
- if ($retval == 0) {
- $retval = $a['horarioTemp'] <=> $b['horarioTemp'];
- }
- return $retval;
- });
- } else {
- $fechas = EventoInsignia::getFechasRomanizadas($eventos[0]['fechas'], $eventos[0]['periodicidad'], $_POST['year'] . '-' . Fechas::dosDigitos($_POST['month']), true);
- $eventos[0]['texto'] = $fechas['texto'];
- $eventos[0]['horario'] = $fechas['horario'];
- $eventos[0]['horarioTemp'] = $fechas['horarioTemp'];
- }
- foreach($eventos as $evento){
- $insignia = EventoInsignia::getDatosInsignia($pdo, $evento['evento_id']);
- $registro = EventoInsignia::getRegistroEvento($pdo, $_SESSION['usuario_id'], $evento['insignia_id']);
- if (count($registro) == 1) {
- $registro = $registro[0];
- $botones = getEstatus($registro);
- $html .= generaEvento($evento['insignia_id'], $evento['titulo'], $insignia['InsigniaTipo_desc'], $insignia['InsigniaTipo_color'], $evento['texto'], $evento['dia'], $fechas['horario'], $botones);
- }
- }
- if (!empty($html))
- $return['html'] = '<div class="mt-4">' . $html . '</div>';
- else
- $return['error'] = 'No fue posible generar los eventos';
- }
- } else {
- $eventos = EventoInsignia::getDatosEventos($pdo, $_POST['month'], $_POST['year']);
- if (count($eventos) == 0){
- $return['html'] = '<div class="msgBox d-flex flex-row justify-content-center align-items-center mt-5">
- <img src="img/triangulos.svg" class="imgBoxIzq" />
- <img src="img/triangulos.svg" class="imgBoxDer" />
- <hr class="hrArriba">
- <hr class="hrAbajo">
- <div class="d-flex flex-column justify-content-center align-items-center display-5 text-center p-4">
- <div>Aún<span class="text-azul1 mx-1">NO</span>hay eventos programados</div>
- </div>
- </div>';
- } else {
- $html = '';
- if (count($eventos) > 1) {
- while ($evento = current($eventos)) {
- $index = key($eventos);
- $fechas = EventoInsignia::getFechasRomanizadas($evento['fechas'], $evento['periodicidad'], $_POST['year'] . '-' . Fechas::dosDigitos($_POST['month']), true);
- $eventos[$index]['texto'] = $fechas['texto'];
- $eventos[$index]['horario'] = $fechas['horario'];
- $eventos[$index]['horarioTemp'] = $fechas['horarioTemp'];
- next($eventos);
- }
- usort($eventos, function($a, $b) {
- $retval = $a['dia'] <=> $b['dia'];
- if ($retval == 0) {
- $retval = $a['horarioTemp'] <=> $b['horarioTemp'];
- }
- return $retval;
- });
- } else {
- $fechas = EventoInsignia::getFechasRomanizadas($eventos[0]['fechas'], $eventos[0]['periodicidad'], $_POST['year'] . '-' . Fechas::dosDigitos($_POST['month']), true);
- $eventos[0]['texto'] = $fechas['texto'];
- $eventos[0]['horario'] = $fechas['horario'];
- $eventos[0]['horarioTemp'] = $fechas['horarioTemp'];
- }
- foreach($eventos as $evento){
- $insignia = EventoInsignia::getDatosInsignia($pdo, $evento['evento_id']);
- $registro = EventoInsignia::getRegistroEvento($pdo, $_SESSION['usuario_id'], $evento['insignia_id']);
- if (count($registro) == 1)
- $registro = $registro[0];
- $botones = getBotones($insignia, $evento, $registro);
- $html .= generaEvento($evento['insignia_id'], $evento['titulo'], $insignia['InsigniaTipo_desc'], $insignia['InsigniaTipo_color'], $evento['texto'], $evento['dia'], $evento['horario'], $botones, $evento['detalle']);
- }
- if (!empty($html))
- $return['html'] = '<div class="mt-4">' . $html . '</div>';
- else
- $return['error'] = 'No fue posible generar los eventos';
- }
- }
- break;
- case 2://Inscripcion a evento
- $_POST['insignia'] = filter_var($_POST['insignia'], FILTER_SANITIZE_NUMBER_INT);
- $stmt = $pdo->prepare('SELECT * FROM alu_fi_inscripcionevento(:Insignia, :Usuario)');
- $stmt->bindParam(':Insignia', $_POST['insignia']);
- $stmt->bindParam(':Usuario',$_SESSION['usuario_id']);
- if(!$stmt->execute()){
- $return['error'] = 'No fue posible inscribirte al evento ';
- print_r($stmt->errorInfo());
- }else{
- $return['msg'] = '¡Felicidades!';
- $return['ok'] = 'Te has inscrio a ';
- }
- $stmt->closeCursor();
- $stmt = null;
- break;
- case 3://Desinscripcion de evento
- $_POST['insignia'] = filter_var($_POST['insignia'], FILTER_SANITIZE_NUMBER_INT);
- $registro = EventoInsignia::getRegistroEvento($pdo, $_SESSION['usuario_id'], $_POST['insignia']);
- if(isset($registro[0]['evidencia']) && !is_null($registro[0]['evidencia']))
- $ejecuta = Archivos::eliminaArchivo('archivos/eventos/' . $_POST['shortname'] . '/' . $_POST['insignia'], $registro[0]['evidencia']);
- else
- $ejecuta = true;
- if ($ejecuta){
- $stmt = $pdo->prepare('SELECT * FROM alu_fd_inscripcionevento(:Insignia, :Usuario)');
- $stmt->bindParam(':Insignia', $_POST['insignia']);
- $stmt->bindParam(':Usuario', $_SESSION['usuario_id']);
- if(!$stmt->execute()){
- $return['error'] = 'No fue posible desinscribirte del evento ';
- print_r($stmt->errorInfo());
- }else{
- $evidencia = $stmt->fetch();
- $return['msg'] = '¡Que triste!';
- $return['ok'] = 'Te has desinscrio de ';
- }
- $stmt->closeCursor();
- $stmt = null;
- } else
- $return['error'] = 'No fue posible eliminar tu evidencia para desinscribirte del evento ';
- break;
- case 4://subir archivos
- $ruta = 'archivos/eventos/'.$_POST['shortname'];
- $carpeta = Archivos::existeCapeta($ruta);
- if(!$carpeta)//busca carpeta y la crea si no existe
- $carpeta = Archivos::creaCarpeta($ruta);
- if($carpeta) {
- $ruta .= '/'.$_POST['insignia'];
- $carpeta = Archivos::existeCapeta($ruta);//busca carpeta y la crea si no existe
- if(!$carpeta) //busca carpeta y la crea si no existe
- $carpeta = Archivos::creaCarpeta($ruta);
- if($carpeta) {//si existe o se creo la carpeta
- $nombre = "evidencia_" . $_SESSION['usuario_id'] . "_" . uniqid() . substr($_FILES['archivo']['name'][0], strrpos($_FILES['archivo']['name'][0], '.'));
- if(Archivos::agregaArchivo($_FILES['archivo']['tmp_name'][0], $ruta, $nombre)) {
- $stmt = $pdo->prepare('SELECT * FROM alu_fu_insigniaevidencia(:Insignia, :Usuario, :Evidencia)');
- $stmt->bindParam(':Insignia', $_POST['insignia']);
- $stmt->bindParam(':Usuario', $_SESSION['usuario_id']);
- $stmt->bindParam(':Evidencia', $nombre);
- if(!$stmt->execute()){
- $return['error'] = 'No fue posible subir el archivo';
- print_r($stmt->errorInfo());
- Archivos::eliminaArchivo($ruta, $nombre);
- }else{
- $return['ok'] = 'El archivo se subió correctamente';
- }
- $stmt->closeCursor();
- $stmt = null;
- } else
- $return['error'] = 'No fue posible cargar el archivo';
- } else
- $return['error'] = 'No fue posible acceder a la carpeta del evento';
- } else
- $return['error'] = 'No fue posible acceder a la carpeta principal';
- break;
- }
- }
- $return['json'] = json_encode($return);
- echo json_encode($return);
- function depuraEventosAnteriores($eventos, $insignias){
- //$eliminar = array();
- while ($evento = current($eventos)) {
- if (!in_array($evento['insignia_id'],$insignias)) {
- $index = key($eventos);
- unset($eventos[$index]);
- }
- next($eventos);
- }
- return $eventos;
- }
- function generaEvento($insignia_id, $titulo, $tipo, $color, $fechas, $dia, $horario, $botones, $detalle = null){
- $html = '<div>
- <div class="d-flex flex-row justify-content-start align-items-stretch evento">
- <div class="calendario d-flex flex-column justify-content-between align-items-center" style="border-top-color:' . $color . ';">
- <h1>' . $dia . '</h1>
- <span>' . $horario . '</span>
- </div>
- <div id="evento_' . $insignia_id . '" class="ml-0 ml-sm-4 flex-grow-1 d-flex flex-column justify-content-start align-items-start">
- <div class="tituloEvento"><span class="mr-1 indivisa-text-bold">' . $tipo . ':</span><span>' . $titulo . '<span>';
- if (!is_null($detalle))
- $html .= '<span class="fa-solid fa-circle-info ml-1" data-toggle="collapse" data-target="#detalle_' . $insignia_id . '" aria-expanded="true" aria-controls="detalle_' . $insignia_id . '"></span>';
- $html .= '</div>
- <div class="indivisa-text-italic">' . $fechas. '</div>
- </div>
- <div class="botones d-flex flex-column justify-content-around align-items-center">' . $botones . '</div>
- </div>';
- if (!is_null($detalle))
- $html .= '<div class="collapse" id="detalle_' . $insignia_id . '" data-parent="#eventos"><div class="p-3"><h6>Detalles del Evento</h6>' . $detalle . '</div></div>';
- $html .= '</div>';
- return $html;
- }
- function getEstatus($registro){
- $html = '';
- switch (strtoupper($registro['estado'])){
- case 'INSCRITO': $html .= '<div class="text-azul2 btn p-1"><i class="fa-regular fa-pen-to-square mr-1"></i>Inscrito al evento</div>'; break;
- case 'RECHAZADO': $html .= '<div class="text-danger btn p-1"><i class="ing-cancelar mr-1"></i>Insignia/Inscripción Rechazada</div>'; break;
- case 'AUTORIZADO': $html .= '<div class="text-success btn p-1"><i class="ing-aceptar mr-1"></i>Insignia/Inscripción Autorizada</div>'; break;
- case 'COMPLETADO': $html .= '<div class="text-azul1 btn p-1"><i class="ing-insignia4 mr-1"></i>Insignia Asignada</div>'; break;
- }
- if (!is_null($registro['comentario']))
- $html .= '<div class="text-secondary">' . $registro['comentarios'] . '</div>';
- return $html;
- }
- function getBotones($insignia, $evento, $registro){
- $html = '';
- $hoy = strtotime(date('Y-m-d h:i:s'));
- if(!isset($registro['estado'])) {//si el alumno no esta inscrito
- if (!is_null($insignia['InsigniaGeneral_inscripciones_inicial'])){
- if ($hoy >= strtotime($insignia['InsigniaGeneral_inscripciones_inicial']) && $hoy <= strtotime($insignia['InsigniaGeneral_inscripciones_final'])){
- $html .= '<button class="btn btn-verde btn-inscribir p-1" data-insignia="' . $insignia['Insignia_id'] . '" data-tipo="1" data-toggle="modal" data-target="#modalConfirmar">
- <span class="ing-reporte-resultados mr-1"></span>Inscribirme
- </button>';
- } else {
- if ($hoy < strtotime($insignia['InsigniaGeneral_inscripciones_inicial'])) {
- $html .= '<label class="txtLabel text-azul1 btn p-1"><span class="fa-regular fa-face-grin-beam-sweat text-azul1 mr-1"></span><span>El período de registro aún no se ha abierto</span></label>';
- } else {
- $html .= '<label class="txtLabel btn p-1"><span class="fa-regular fa-face-frown text-danger mr-1"></span><span>El período de registro ha terminado</span></label></div>';
- }
- }
- } else {
- $html .= '<label class="txtLabel btn p-1"><span class="ing-importante text-warning mr-1"></span><span class="text-primary">Ver detalle para registro</span></label>';
- }
- } else {//si esta inscrito
- $html .= '<button class="btn btn-rojo btn-desinscribir p-1" data-insignia="' . $insignia['Insignia_id'] . '" data-shortname="'. $evento['shortname'] .'" data-tipo="2" data-toggle="modal" data-target="#modalConfirmar">
- <span class="ing-cancelar mr-1"></span>Desinscribirme
- </button>';
- }
- if(isset($registro['estado']) && $insignia['Insignia_hasEvidencia']) {
- if (!$registro['evidencia']) {//si el evento necesita evidencia y no se ha subido
- if (is_null($insignia['Insignia_evidencia_desc']))
- $insignia['Insignia_evidencia_desc'] = '';
- $html .= '<button class="btn btn-azul1 addEvidencia p-1" data-insignia="' . $insignia['Insignia_id'] . '" data-shortname="' . $evento['shortname'] .'" data-toggle="modal" data-target="#modalSubirArchivo">
- <input type="hidden" value="' . $insignia['Insignia_evidencia_desc'] . '">
- <span class="ing-carga-archivo"></span> Subir Evidencia
- </button>';
- } else {
- $html .= '<a class="btn btn-azul2 p-1" href="./archivos/eventos/'. $evento['shortname']. '/' .$evento['insignia_id']. '/' . $registro['evidencia'] .'" target="_blank">
- <span class="ing-ver"></span> Ver Evidencia Cargada
- </a>';
- }
- }
- return $html;
- }
|