420 lines
24 KiB
PHP
420 lines
24 KiB
PHP
<?php
|
|
ini_set('display_errors', 1);
|
|
ini_set('display_startup_errors', 1);
|
|
error_reporting(E_ALL);
|
|
|
|
require_once 'class/c_login.php';
|
|
if (!isset($_SESSION['user']))
|
|
die(header('Location: index.php'));
|
|
|
|
$user = unserialize($_SESSION['user']);
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Asistencia Profesores |
|
|
<?= $user->facultad['facultad'] ?? "Administrador"; ?>
|
|
</title>
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"
|
|
integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw=="
|
|
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
<?php
|
|
include 'import/html_css_files.php';
|
|
?>
|
|
<style>
|
|
.checa-box {
|
|
border: 3px solid #001D68;
|
|
border-radius: 10px;
|
|
padding: 20px;
|
|
}
|
|
|
|
.juanita {
|
|
width: 20vw;
|
|
}
|
|
|
|
.tit1 {
|
|
font-size: 2.5rem;
|
|
line-height: 1;
|
|
}
|
|
|
|
.tit2 {
|
|
font-size: 2rem;
|
|
line-height: 1;
|
|
}
|
|
|
|
.tit3 {
|
|
font-size: 1.5rem;
|
|
line-height: 1;
|
|
}
|
|
|
|
.movie {
|
|
box-shadow: none;
|
|
}
|
|
|
|
.datos>hr:last-of-type {
|
|
display: none;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.juanita {
|
|
width: 100%;
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<?php
|
|
include "import/html_header.php";
|
|
html_header(
|
|
$user->user['nombre'],
|
|
$user->rol['rol'],
|
|
);
|
|
$nohorario = false;
|
|
$noduplicadas = false;
|
|
$juanita = 'imagenes/registrar.svg';
|
|
?>
|
|
<main class="content marco pt-5">
|
|
<section id="message">
|
|
</section>
|
|
<!-- Aquí iban los datos -->
|
|
<div id="registro" class="sub-bloque w-100">
|
|
<div class="d-flex flex-column flex-sm-row-reverse justify-content-between align-items-start">
|
|
<div class="flex-grow-1 d-flex flex-row justify-content-center align-items-start">
|
|
<form class="checa-box w-100" id="formaChecador" autocomplete="off">
|
|
<?= "{$_ENV['CHECADOR']}?cve=" . $user->user['clave'] ?>
|
|
<input type="hidden" id="cve" value="<?php echo $user->user["clave"]; ?>">
|
|
<div class="d-flex justify-content-center align-items-center flex-wrap">
|
|
<?php if ($user->profesor) { ?>
|
|
<?php
|
|
//$has_token = $db->querySingle("SELECT FALSE") or die($db->getLastError());
|
|
//if (!array_pop($has_token)) {
|
|
$curl = curl_init();
|
|
curl_setopt_array($curl, [
|
|
CURLOPT_URL => "{$_ENV['CHECADOR']}?cve=" . $user->user['clave'],
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
//CURLOPT_POSTFIELDS => json_encode(["username" => "SGU_APSA_AUD_ASIST", "password" => "B4qa594JFPr2ufHrZdHS8A=="]),
|
|
CURLOPT_HTTPHEADER => array('Content-Type:application/json'),
|
|
]);
|
|
if(true){
|
|
echo curl_exec($curl);
|
|
curl_close($curl);
|
|
exit();
|
|
}
|
|
$datos_checado = json_decode(curl_exec($curl), true);
|
|
|
|
|
|
if (isset($datos_checado["horarios"])) {
|
|
$horarios = $datos_checado["horarios"];
|
|
} else {
|
|
$horarios = array();
|
|
}
|
|
if (isset($datos_checado["duplicadas"])) {
|
|
$duplicadas = $datos_checado["duplicadas"];
|
|
} else {
|
|
$duplicadas = array();
|
|
}
|
|
curl_close($curl);
|
|
echo "RESULTADO:".$datos_checado. '\n';
|
|
echo "{$_ENV['CHECADOR']}?cve=" . $user->user['clave'];
|
|
print_r($datos_checado);
|
|
if (count($horarios) != 0) {
|
|
?>
|
|
<div class="movie w-100">
|
|
<div class="text-center">
|
|
<a href="javascript:checado();"
|
|
class="text-decoration-none text-primary d-flex flex-column align-items-center">
|
|
<h5 class="text-info mb-3">Hora actual - <b>
|
|
<?php echo date("H:i d/m/Y"); ?>
|
|
</b></h5>
|
|
<div class="btn btn-primary rounded-pill mb-4">Checar Asistencia</div>
|
|
<div class="datos d-flex flex-column">
|
|
<?php
|
|
foreach ($horarios as $horarioFacultadPadre) {
|
|
foreach ($horarioFacultadPadre as $horarioProfesor) {
|
|
echo '<div class="indivisa-text-black tit2">' . $horarioProfesor["materia"] . '</div>';
|
|
echo '<div class="indivisa-text-bold tit3 my-2">Salón: ' . $horarioProfesor["salon"] . "</div>";
|
|
echo '<div>' . $horarioProfesor["dia"] . ' ' . $horarioProfesor["horario_hora"] . " - " . $horarioProfesor["horario_fin"] . "</div>";
|
|
echo '<div class="text-info indivisa-text-italic">' . $horarioProfesor["carrera"] . "</div>";
|
|
//print_r($horarioProfesor);
|
|
}
|
|
echo "<hr>";
|
|
}
|
|
?>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
} else {
|
|
$nohorario = true;
|
|
}
|
|
|
|
if (count($duplicadas) != 0) {
|
|
$juanita = 'imagenes/asistencia.svg'; ?>
|
|
<div class="w-100">
|
|
<div class="text-center">
|
|
<h5 class="text-info mb-3">Hora actual - <b>
|
|
<?php echo date("H:i d/m/Y"); ?>
|
|
</b></h5>
|
|
<div class="text-success tit1 mb-3">Asistencia ya verificada</div>
|
|
<div class="datos mt-2">
|
|
<?php
|
|
foreach ($duplicadas as $horarioFacultadPadre) {
|
|
foreach ($horarioFacultadPadre as $horarioProfesor) {
|
|
echo '<div class="indivisa-text-black tit2">' . $horarioProfesor["materia"] . '</div>';
|
|
echo '<div class="indivisa-text-bold tit3 my-2">Salón: ' . $horarioProfesor["salon"] . "</div>";
|
|
echo '<div>' . $horarioProfesor["dia"] . ' ' . $horarioProfesor["horario_hora"] . " - " . $horarioProfesor["horario_fin"] . "</div>";
|
|
echo '<div class="text-info indivisa-text-italic">' . $horarioProfesor["carrera"] . "</div>";
|
|
echo "<div>Asistencia:</b> " . $horarioProfesor["registro_fecha"] . "</div>";
|
|
}
|
|
echo "<hr>";
|
|
}
|
|
?>
|
|
</div>
|
|
<button class="mt-3 btn btn-outline-primary rounded-pill mb-4"
|
|
onclick="window.location.reload()"><i class="fa-solid fa-rotate-right"></i>
|
|
Actualizar página</button>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
} else {
|
|
$noduplicadas = true;
|
|
}
|
|
|
|
if ($nohorario && $noduplicadas) {
|
|
$juanita = 'imagenes/no_horario.svg'; ?>
|
|
<div class="w-100">
|
|
<div class="text-center">
|
|
<h5 class="text-info mb-3">Hora actual - <b>
|
|
<?php echo date("H:i d/m/Y"); ?>
|
|
</b></h5>
|
|
<div class="text-center tit2 indivisa-text-black text-primary mb-4">
|
|
<strong class="text-danger">No</strong> tienes clases en este horario
|
|
</div>
|
|
<div class="indivisa-text-italic">
|
|
<strong class="text-danger">Recuerda:</strong> Solo se puede registrar entre
|
|
<strong class="text-secondary">30</strong> minutos antes y
|
|
<strong class="text-secondary">20</strong> minutos después.
|
|
</div>
|
|
<button class="mt-3 btn btn-outline-primary rounded-pill mb-4"
|
|
onclick="window.location.reload()"><i class="fa-solid fa-rotate-right"></i>
|
|
Actualizar página</button>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
//} else {
|
|
?>
|
|
<!--
|
|
<div class="card col-10 col-md-3 border-primary border-3 m-2 disabled bg-dark">
|
|
<div class="card-body text-center disabled">
|
|
<a href="#"
|
|
class="card-link text-decoration-none text-primary d-flex flex-column align-items-center disabled text-danger">
|
|
<i class="ing-cancelar" aria-hidden="true"></i>
|
|
<h5 class=" mt-2">Checador</h5>
|
|
</a>
|
|
</div>
|
|
</div> -->
|
|
<?php
|
|
//}
|
|
echo "<!--";
|
|
?>
|
|
<div class="movie w-100">
|
|
<div class="text-center">
|
|
<a href="#"
|
|
class="card-link text-decoration-none text-primary d-flex flex-column align-items-center">
|
|
<h5 class="mt-2">Mis horarios</h5>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<div class="movie w-100">
|
|
<div class="text-center">
|
|
<a href="#"
|
|
class="card-link text-decoration-none text-primary d-flex flex-column align-items-center">
|
|
<i class="fa fa-table" aria-hidden="true"></i>
|
|
<h5 class=" mt-2">Mis asistencias</h5>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
echo "-->";
|
|
} else {
|
|
foreach ($paginas as $pagina) {
|
|
if (is_null($pagina['pagina_ruta']))
|
|
continue;
|
|
?>
|
|
<div class="movie w-100">
|
|
<div class="text-center">
|
|
<a href="<?= $pagina['pagina_ruta'] ?>.php"
|
|
class="card-link text-decoration-none text-primary d-flex flex-column align-items-center">
|
|
<i class="fa fa-table" aria-hidden="true"></i>
|
|
<div class="tit2 mt-2">
|
|
<?= $pagina['pagina_ruta']; ?>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<?php }
|
|
|
|
} ?>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<img src="<?php echo $juanita; ?>" alt="registrar"
|
|
class="align-self-end mr-0 mr-sm-4 juanita invisible">
|
|
</div>
|
|
</div>
|
|
<div id="result_ok" class="sub-bloque d-none w-100">
|
|
<div id="estado" class="d-flex flex-column-reverse flex-sm-row justify-content-between align-items-start">
|
|
<img src="imagenes/asistencia.svg" alt="registrar"
|
|
class="align-self-end mr-0 mr-sm-4 juanita invisible">
|
|
<div class="flex-grow-1 d-flex flex-row justify-content-center align-items-start w-100">
|
|
<div class="checa-box w-100">
|
|
<div id="asistencia" class="indivisa-text-black text-center tit1 mb-4">Asistencia</div>
|
|
<div class="indivisa-text-bold tit2 text-center text-uppercase d-none" id="nombre">Nombre</div>
|
|
<ul class="text-danger" id="list-result">
|
|
<div class="indivisa-text-bold mb-3 mt-4 text-info text-uppercase">Facultad</div>
|
|
<li class="">
|
|
<span
|
|
class="text-secondary tit3 font-weight-bold text-uppercase mat-desc">Materia</span><br>
|
|
<span class="text-secondary mat-fecha font-weight-bold">hh:mm</span>
|
|
<br>
|
|
<span class="text-secondary mat-salon ml-3 d-none">SALÓN: <span
|
|
class="salon">SAL</span></span>
|
|
<span class="text-secondary ml-3 d-none">GRUPO: <span class="mat-gpo">GPO</span></span>
|
|
</li>
|
|
</ul>
|
|
<button class="mt-3 btn btn-outline-primary rounded-pill mb-4"
|
|
onclick="window.location.reload()"><i class="fa-solid fa-rotate-right"></i> Actualizar
|
|
página</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="result_no" class="sub-bloque d-none w-100">
|
|
<div id="estado" class="d-flex flex-column-reverse flex-sm-row justify-content-between align-items-start">
|
|
<img src="imagenes/no_horario.svg" alt="no_horario"
|
|
class="align-self-end mr-0 mr-sm-4 juanita invisible">
|
|
<div class="flex-grow-1 d-flex flex-row justify-content-center align-items-start w-100">
|
|
<div class="checa-box w-100">
|
|
<h5 class="text-info mb-3">Hora actual - <b>
|
|
<?php echo date("H:i d/m/Y"); ?>
|
|
</b></h5>
|
|
<div class="text-center tit2 indivisa-text-black text-primary my-4" id="nombre">
|
|
<strong class="text-danger">No</strong> tienes clases en este horario
|
|
</div>
|
|
<div class="text-center sin-servicio">No hay ninguna clase registrada en este horario para
|
|
<h3 id="nombre-profesor" class="indivisa-text-bold my-3"></h3>
|
|
<h6 class="indivisa-text-italic mt-5"><strong class="text-danger">Recuerda:</strong> Solo se
|
|
puede registrar entre <strong class="text-secondary">20</strong> minutos antes y <strong
|
|
class="text-secondary">30</strong> minutos después.</h6>
|
|
<button class="mt-3 btn btn-outline-primary rounded-pill mb-4"
|
|
onclick="window.location.reload()"><i class="fa-solid fa-rotate-right"></i> Actualizar
|
|
página</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="internet" class="sub-bloque d-none w-100">
|
|
<div id="estado" class="d-flex flex-column-reverse flex-sm-row justify-content-between align-items-start">
|
|
<img src="imagenes/no_internet.svg" alt="no_internet"
|
|
class="align-self-end mr-0 mr-sm-4 juanita invisible">
|
|
<div class="flex-grow-1 d-flex flex-row justify-content-center align-items-start w-100">
|
|
<div class="checa-box w-100">
|
|
<div class="tit2 indivisa-text-black text-center">Se perdió la conexión a internet</div>
|
|
<div class="text-secondary tit3 text-center sin-servicio my-5">Por el momento la conexión a
|
|
internet
|
|
está fallando, por favor inténtelo más tarde.</div>
|
|
<!-- Código de error: <span class="clave font-weight-bold">000</span> -->
|
|
<div class="text-center">
|
|
<div class="spinner-grow text-warning" role="status"><span class="sr-only">Loading...</span>
|
|
</div>
|
|
<em class="text-info">Conectando</em>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="error_bd" class="sub-bloque d-none w-100">
|
|
<div id="estado" class="d-flex flex-column-reverse flex-sm-row justify-content-between align-items-start">
|
|
<img src="imagenes/error.svg" alt="error" class="align-self-end mr-0 mr-sm-4 juanita invisible">
|
|
<div class="flex-grow-1 d-flex flex-row justify-content-center align-items-start w-100">
|
|
<div class="checa-box w-100">
|
|
<div class="tit2 text-center indivisa-text-black text-danger mb-5">Error en el sistema</div>
|
|
<div class="text-secondary text-center sin-servicio tit3">Se ha presentado un error en el
|
|
sistema, por
|
|
favor inténtelo más tarde y repórtelo al <strong>CAS</strong>.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="not_in_db" class="sub-bloque d-none w-100">
|
|
<div id="estado" class="d-flex flex-row justify-content-between align-items-start h-100 pl-3 pr-5 pt-5">
|
|
<img src="imagenes/no_clave.svg" alt="no_clave" class="align-self-end mr-0 mr-sm-4 juanita invisible">
|
|
<div class="flex-grow-1 d-flex flex-row justify-content-center align-items-start">
|
|
<div class="checa-box">
|
|
<div class="indivisa-text-black subtitle mb-5 text-center tit2">La clave <strong
|
|
class="text-danger" id="clave-no-encontrada"></strong> no está registrada</div>
|
|
<div class="text-center mb-4 tit3">Revisa que la clave sea la correcta</div>
|
|
<div class="text-center indivisa-text-italic text-info">No se pudo registrar asistencia</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="avisos" class="sub-bloque d-none w-100">
|
|
<div id="estado" class="d-flex flex-row justify-content-between align-items-start h-100 pl-3 pr-5 pt-5">
|
|
<img src="imagenes/aviso.svg" alt="aviso" class="align-self-end mr-0 mr-sm-4 juanita invisible">
|
|
<div class="flex-grow-1 d-flex flex-row justify-content-center align-items-start">
|
|
<div class="checa-box">
|
|
<div class="indivisa-text-black subtitle mb-4 tit2">Avisos</div>
|
|
<div class="text-secondary" id="lista-avisos"></div>
|
|
<div class="text-center mt-4"><button type="button" class="btn btn-success"
|
|
id="btn-aceptar-avisos">Aceptar</button></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<p id="last-error" class="d-none">-</p>
|
|
</main>
|
|
<?php
|
|
include "import/html_footer.php";
|
|
?>
|
|
<script src="js/jquery.min.js"></script>
|
|
<script src="js/bootstrap/bootstrap.min.js"></script>
|
|
<?php include_once 'js/messages.php';
|
|
//$user = unserialize($_SESSION['user']); ?>
|
|
<script>
|
|
$(document).ready(function () {
|
|
// constantly update the date and time
|
|
setInterval(function () {
|
|
$('.fecha_hora').html(new Date().toLocaleString());
|
|
}, 1000);
|
|
|
|
<?php if (isset($_GET['error'])) { ?>
|
|
var error = <?php echo $_GET['error'] ?? 0; ?>;
|
|
switch (error) {
|
|
case 1:
|
|
triggerMessage('No tienes permiso de acceso a esta página', 'Error de permisos', 'danger');
|
|
break;
|
|
|
|
default:
|
|
triggerMessage('Error desconocido', 'Error', 'danger');
|
|
break;
|
|
}
|
|
<?php } ?>
|
|
});
|
|
function checado() {
|
|
document.querySelector('#formaChecador').requestSubmit();
|
|
}
|
|
</script>
|
|
<script src="./js/bootstrap/popper.min.js"></script>
|
|
<script type="text/javascript" src="js/checador.js"></script>
|
|
|
|
</body>
|
|
|
|
</html>
|