123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455 |
- <?php
- require_once("../include/constantes.php");
- require_once("../include/bd_pdo.php");
- require_once("../include/util.php");
- require_once("../classes/ValidaSesion.php");
- require_once("../classes/MainMenu.php");
- $menu = 8;
- //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
- $objSesion = new ValidaSesion($pdo, array(24,85), APSA);
- if(!$objSesion->tieneAcceso()){
- echo $_SESSION["usuario_id"]. " Sin permiso"; exit();
- //$objSesion->terminaSesion();
- }
- $objSesion->validaPeriodoUsuario();//si no tiene periodo manda a main
-
- ?>
- <!DOCTYPE html>
- <html lang="es" prefix="og: http://ogp.me/ns#">
- <head>
- <title>APSA - Facultad de Ingeniería</title>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
- <link rel="icon" type="image/png" href="../img/favicon.png" />
- <link rel="stylesheet" href="../css/bootstrap-ulsa.min.css" type="text/css">
- <link rel="stylesheet" href="../css/indivisa.css" type="text/css">
- <link rel="stylesheet" href="../css/sgi.css?rand=<?php echo rand();?>" type="text/css">
- <link rel="stylesheet" href="../css/fa_all.css" type="text/css">
- <link rel="stylesheet" href="../css/custominputfile.css" type="text/css">
- <script src="../js/util.js"></script>
- </head>
- <body>
- <div>
- <?php
- //--- Objeto que pinta menu
- $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo, APSA, "Captura de calificaciones finales");//usr, menu, pdo, sist
- $menuObj->printMenu();
-
- $filter_prof = $_SESSION["usuario_id"];
-
- if(!empty($_POST["prof"])){
- $filter_prof = filter_input(INPUT_POST, "prof", FILTER_SANITIZE_NUMBER_INT);//limpia texto
- }
- if(!empty($_POST["materia"])){
- $tmp = $_POST["materia"];
- $tmpArr = explode("|", $tmp);
- $filter_materia = intval($tmpArr[0]);
- $filter_grupo = intval($tmpArr[1]);
- unset($tmp);
- unset($tmpArr);
- }
-
- //Materias
- $stmt = $pdo->prepare('Select * from fs_materiasprofesor(:per, :usr)');
- $stmt->bindParam(":per", $_SESSION["periodo_id"]);
- $stmt->bindParam(":usr", $filter_prof);
- if(!$stmt->execute()){
- $errorDesc = "Ocurrió un error al leer los datos de la materia";
- }else{
- $materias_rs = $stmt->fetchAll();
- }
- $stmt->closeCursor();
- //Fecha límite
- $stmt = $pdo->prepare('Select * from fs_periodo(:per, NULL, NULL, NULL)');
- $stmt->bindParam(":per", $_SESSION["periodo_id"]);
- if(!$stmt->execute()){
- $errorDesc = "Ocurrió un error al leer los datos de la materia";
- }else{
- $fecha_rs = $stmt->fetch();
- $fecha_limite = date('Y-m-d', strtotime($fecha_rs["Periodo_fecha_final"]. ' + 9 days'));
- $fecha_min = date('Y-m-d', strtotime($fecha_rs["Periodo_fecha_inicial"]. ' - 7 days'));
- unset($fecha_rs);
- }
- $stmt->closeCursor();
- //--Manejo de errores y mensajes de exito
- if(isset($_GET["error"]) && is_numeric($_GET["error"])){
- switch ($_GET["error"]){
- case 0: $errorDesc = "No se recibieron los datos correctamente."; break;
- case 1: $errorDesc = "No es una extensión válida. Solo se aceptan archivos .PDF. Sube los archivos de nuevo."; break;
- case 2: $errorDesc = "Ocurrió un error al insertar los archivos."; break;
- case 3: $errorDesc = "Ocurrió un error al subir los archivos"; break;
- }
- }
- if(isset($_GET["ok"]) && is_numeric($_GET["ok"])){
- switch ($_GET["ok"]){
- case 0: $successDesc = "Los archivos se cargaron correctamente."; break;
- }
- }
-
- ?>
- <main class="container-fluid content marco">
-
- <?php include_once("../include/errorMessage.php"); ?>
- <?php include("../include/periodoCambio.php");?>
-
- <!-- Filtro -->
- <div class="row">
- <div class="col-12">
- <form action="calificaciones_grupo.php" method="post" onsubmit="return valida()">
- <div class="form-box">
- <?php
- if($_SESSION["sgi_administrador"] || $_SESSION["jefe_carrera"]){
- if($_SESSION["sgi_administrador"]){
- $stmt = $pdo->prepare('Select * from fs_profesoresareahoras(:per, NULL, NULL, 1, 0, NULL)');
- }else{
- $stmt = $pdo->prepare('Select * from fs_profesoresareahoras_jefe(:per, :usr, NULL, 1, 0, NULL)');
- $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
- }
- $stmt->bindParam(":per", $_SESSION["periodo_id"]);
- if(!$stmt->execute()){
- $errorDesc = "Ocurrió un error al cargar los profesores";
- }else{
- $profesor_rs = $stmt->fetchAll();
- }
- $stmt->closeCursor();
- ?>
- <div class="form-group row">
- <label for="filter_prof" class="col-4 col-form-label">Profesor</label>
- <div class="col-6 ">
- <div id="dlProfesor" class="datalist datalist-select mb-1 w-100">
- <div class="datalist-input">Selecciona un profesor</div>
- <span class="ing-buscar icono"></span>
- <ul style="display:none">
- <?php foreach($profesor_rs as $prof) {
- $nombre = $prof["Usuario_apellidos"]." ".$prof["Usuario_nombre"];
- ?>
- <li data-id="<?php echo $prof["Usuario_id"];?>" <?php if($filter_prof == $prof["Usuario_id"]){ echo 'class="selected"'; }?> ><?php echo $nombre;?></li>
- <?php }?>
- </ul>
- <input type="hidden" id="filter_prof" name="prof" value="">
- </div>
- </div>
- </div>
- <?php }?>
- <div class="form-group row">
- <label for="filter_grupo" class="col-4 col-form-label">Materia</label>
- <div class="col-6 ">
- <div id="dlMateria" class="datalist datalist-select mb-1 w-100">
- <div class="datalist-input">Selecciona una materia</div>
- <span class="ing-buscar icono"></span>
- <ul style="display:none">
- <?php if(isset($materias_rs)){ ?>
- <?php foreach($materias_rs as $materia) {
- $nombre = $materia["Grupo_desc"]." ".$materia["Carrera_prefijo"]." - ".$materia["Materia_desc"];
- ?>
- <li data-id="<?php echo $materia["Materia_id"]."|".$materia["Grupo_id"];?>" <?php if($filter_materia == $materia["Materia_id"] && $filter_grupo == $materia["Grupo_id"]){ echo 'class="selected"'; }?>>
- <?php echo $nombre;?></li>
- <?php }?>
- <?php } ?>
- </ul>
- <input type="hidden" id="filter_materia" name="materia" value="">
- </div>
- </div>
- </div>
- </div>
- <div class="form-group row">
- <div class="col-12 text-center">
- <button type="submit" class="btn btn-outline-primary"><?php echo $ICO["aceptar"]; ?> Buscar archivos</button>
- </div>
- </div>
- </form>
- </div>
- </div>
- <?php if(isset($filter_materia) && isset($filter_grupo)){
- $hoy = strtotime(date('Y-m-d'));
- if($_SESSION["sgi_administrador"] || (!$_SESSION["sgi_administrador"] && $hoy <= strtotime($fecha_limite) && $hoy>= strtotime($fecha_min)) ){//Dentro del tiempo
- ?>
- <h5 class="text-right">Límite de captura: <?php echo fechaSlash($fecha_limite);?> </h5>
- <?php if($objSesion->puedeEditar() && !$_SESSION["sgi_administrador"] && $filter_prof == $_SESSION["usuario_id"] || $_SESSION["sgi_administrador"] ) { ?>
- <div class="row">
- <div class="col-12 text-right">
- <button type="button" class="btn btn-outline-secondary" data-toggle="modal" data-target="#modal" data-tipo="1"><?php echo $ICO["mas"];?> Agregar archivo de calificaciones</button>
- </div>
- </div>
- <?php }
- }else{ ?>
- <p class="text-center text-danger">Fuera del periodo de captura</p>
- <?php
- }
- ?>
- <?php
- //Archivos
- $stmt = $pdo->prepare('Select * from fs_archivocalificacionmaterias(:mat, :gpo, :per)');
- $stmt->bindParam(":per", $_SESSION["periodo_id"]);
- $stmt->bindParam(":gpo", $filter_grupo);
- $stmt->bindParam(":mat", $filter_materia);
- if(!$stmt->execute()){
- $errorDesc = "Ocurrió un error al leer los datos del archivo";
- }else{
- $archivo_rs = $stmt->fetchAll();
- }
- $stmt->closeCursor();
- ?>
- <div id="archivos_block">
- <div class="row justify-content-center my-5">
- <div class="col-12 col-sm-8 table-responsive">
- <table class="table table-sm table-striped table-white">
- <thead class="thead-dark">
- <tr >
- <th>Nombre</th>
- <th>Fecha</th>
- <th>Acciones</th>
- </tr>
- </thead>
- <tbody>
- <?php foreach($archivo_rs as $arc){ ?>
- <tr id="id<?php echo $arc["CalificacionArchivo_id"];?>" data-id="<?php echo $arc["CalificacionArchivo_id"];?>" data-file="<?php echo $arc["CalificacionArchivo_archivo"];?>">
- <td ><?php echo $arc["CalificacionArchivo_nombre"];?></td>
- <td class="text-center"><?php echo date("d/m/Y h:i:s", strtotime($arc["CalificacionArchivo_fecha"])); ?></td>
- <td class="text-center icono-acciones">
- <a href="./files/calificaciones/<?php echo $_SESSION["periodo_id"]; ?>/<?php echo $arc["CalificacionArchivo_archivo"];?>" target="_blank" title="Ver archivo"><?php echo $ICO["ver"];?></a>
- <?php if($_SESSION["sgi_administrador"] || (!$_SESSION["sgi_administrador"] && $hoy <= strtotime($fecha_limite) && $_SESSION["usuario_id"] == $arc["Usuario_id"] ) ){//Dentro del tiempo ?>
- <?php if($objSesion->puedeEditar() && !$_SESSION["sgi_administrador"] && $filter_prof == $_SESSION["usuario_id"] || $_SESSION["sgi_administrador"]){ ?>
- <a href="#" data-toggle="modal" data-target="#modal_confirm" title="Borrar"><?php echo $ICO["borrar2"];?></a>
- <?php } ?>
- <?php } ?>
- </td>
- </tr>
- <?php } ?>
- </tbody>
- </table>
- </div>
- </div>
- </div>
- <?php }?>
- </main>
- <!--- FOOTER--->
- <?php require_once("../include/footer.php"); ?>
- <!-- Modal -->
- <?php if($objSesion->puedeEditar() && !$_SESSION["sgi_administrador"] && $filter_prof == $_SESSION["usuario_id"] || $_SESSION["sgi_administrador"]){ ?>
- <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
- <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
- <div class="modal-content">
- <div class="modal-header">
- <h4 class="col-12 modal-title text-center"><span id="modalLabel">Archivo de calificaciones</span>
- <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
- <span aria-hidden="true">×</span>
- </button></h4>
- </div>
- <div class="modal-body">
- <form method="post" action="./action/calificaciones_grupo_insert.php" enctype="multipart/form-data" id="formFile" onsubmit="return validaArchivos()">
- <input type="hidden" name="prof" value="<?php echo $filter_prof;?>">
- <input type="hidden" name="materia" value="<?php echo $filter_materia;?>">
- <input type="hidden" name="grupo" value="<?php echo $filter_grupo;?>">
- <!--<input type="file" name="file">-->
- <p>Sube los archivos .pdf con las calificaciones finales. Escribe un nombre para que puedas identificar los archivos en caso de que necesites reemplazarlos.</p>
- <div class="form-box" id="archivos-list">
- <!--
- <div class="form-group row archivo-block mb-3 d-none">
- <input type="text" maxlength="50" class="form-control nombre" placeholder="Nombre">
- <div class="col-12 col-sm-6">
- <input type="file" accept="application/pdf">
- <div class="invalid-feedback"><?php echo $ICO["alerta"];?> Selecciona un archivo.</div>
- </div>
- <div class="col-12 col-sm-2">
- <button type="button" class="btn btn-outline-danger btn-quita d-none"><?php echo $ICO["borrar"];?></button>
- </div>
- </div>-->
- <div class="form-group row archivo-block mb-3">
- <div class="col-12 col-sm-4 barra-right">
- <input type="text" maxlength="50" class="form-control nombre" name="nombre[]" placeholder="Nombre" required="required">
- </div>
- <div class="col-12 col-sm-6 pt-1">
- <input type="file" class="archivo" name="archivo[]" required="required" accept="application/pdf">
- <div class="invalid-feedback"><?php echo $ICO["alerta"];?> Selecciona un archivo.</div>
- </div>
- <div class="col-12 col-sm-2">
- <button type="button" class="btn btn-outline-danger btn-quita d-none"><?php echo $ICO["borrar"];?></button>
- </div>
- </div>
- </div>
- <p class="text-center"><button class="btn btn-outline-secondary" id="btn-agrega"><?php echo $ICO["mas"];?> Agregar más archivos</button></p>
- <p class="text-center mt-5"><button type="submit" class="btn btn-outline-primary"><?php echo $ICO["cargar"];?> Enviar archivos</button></p>
- </form>
- </div>
- </div>
- </div>
- </div>
- <div class="modal fade" id="modal_confirm" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
- <div class="modal-dialog modal-dialog-centered" role="document">
- <div class="modal-content">
- <div class="modal-body">
- <div class="row">
- <div class="col">
- <p class="font-weight-bold">¿Estás seguro de que quieres borrar el archivo de calificaciones?</p>
- <p>Esta acción no se puede deshacer.</p>
- </div>
- </div>
- </div>
- <div class="modal-footer">
- <input type="hidden" id="id_borrar" value="">
- <input type="hidden" id="file_borrar" value="">
- <button type="button" class="btn btn-outline-primary btn-borrar"><?php echo $ICO["aceptar"];?> Borrar</button>
- <button type="button" class="btn btn-outline-danger" data-dismiss="modal" aria-label="Close"><?php echo $ICO["cancelar"];?> Cancelar</button>
- </div>
- </div>
- </div>
- </div>
- <?php } ?>
- </div>
-
- <script src="../js/jquery.min.js"></script>
- <script src="../js/bootstrap/popper.min.js"></script>
- <script src="../js/bootstrap/bootstrap.min.js"></script>
- <script src="../js/sidebarmenu.js"></script>
- <script src="../js/datalist.js"></script>
- <script src="../js/custominputfile.min-es.js"></script>
- <script>
- setDatalist("#periodo", <?php echo $_SESSION["periodo_id"]; ?>);
- $(document).on('click', '#dlPeriodo ul li' ,function(){
- $("#formaPeriodo").submit();
- });
- </script>
- <script>
- setDatalist("#filter_prof", <?php echo $filter_prof; ?>);
-
- $('#dlProfesor ul li').click(function(){
- var id = $(this).data('id');
- $("#archivos_block").remove();
- $.ajax({
- url: './action/materiasprofesor_select.php',
- type: 'POST',
- dataType: 'json',
- data: { "id": id },
- success: function(result) {
- if(result["error"]!= "" && result["error"] !== undefined){
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(result["error"]);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }else{
-
- html = "";
- for(i=0; i<result["materias"].length; i++){
- nombre = result["materias"][i]["Grupo_desc"]+" "+result["materias"][i]["Carrera_prefijo"]+" - "+result["materias"][i]["Materia_desc"]
- html += '<li data-id="'+result["materias"][i]["Materia_id"]+'|'+result["materias"][i]["Grupo_id"]+'">'+nombre+'</li>';
- }
- $("#dlMateria ul").html(html);
- setDatalistFirst("#filter_materia");
- }
- },
- error: function(jqXHR, textStatus, errorThrown ){
- modal.modal('hide');
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(errorThrown);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }
- });//ajax
- });
- function valida(){
- invalidDatalist("#filter_materia", false);
- if($("#filter_materia").val() == '' || $("#filter_materia").val() == 0 ){
- invalidDatalist("#filter_materia", true);
- return false;
- }
- return true;
- }
- function validaArchivos(){
- var error = false;
- $.each($('#archivos-list .archivo'), function(){
- if($(this).val() == ''){
- error = true;
- $(this).addClass("is-invalid");
- }
- });
- return !error;
- }
- $(document).on( "click", "#btn-agrega", function(event){
- var size = $("#archivos-list >.archivo-block").length;
- var cloned = $("#archivos-list >.archivo-block:first-child").clone(true).appendTo("#archivos-list");
- //cloned.removeClass("d-none");
- //cloned.find("input").attr("name", "archivo[]").attr("required", true).addClass("archivo");
- cloned.find("input").val("");
- if(size >= 1){
- $("#archivos-list .btn-quita").removeClass("d-none");
- }
- //$("#archivos_num").val(size);
- });
- $(".btn-quita").click(function(){//quita contacto
- $(this).parents(".archivo-block").remove();
- var size = $("#archivos-list >.archivo-block").length;
- if(size <= 2){
- $("#archivos-list .btn-quita").addClass("d-none");
- }
- //$("#archivos_num").val(size-1);
- });
- $(document).ready(function(){
- $('#modal_confirm').on('show.bs.modal', function (event) {
- var button = $(event.relatedTarget); // Button that triggered the modal
- var id = button.parents("tr").data("id");
- var file = button.parents("tr").data("file");
- $("#id_borrar").val(id);
- $("#file_borrar").val(file);
- });
- $(".btn-borrar").click(function(){
- var id = $("#id_borrar").val();
- var file = $("#file_borrar").val();
- $.ajax({
- url: './action/calificaciones_grupo_delete.php',
- type: 'POST',
- dataType: 'json',
- data: { "id": id, "file":file},
- success: function(result) {
- if(result["error"]!= "" && result["error"] !== undefined){
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(result["error"]);
- }else{
- $("#successBox").collapse('show');
- $("#successBox_text").html(result["ok"]);
- $("#id"+id).remove();
- }
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- },
- error: function(jqXHR, textStatus, errorThrown ){
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(errorThrown);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }
- });//ajax
- $('#modal_confirm').modal("hide");
- });
-
- /* $('#archivo').customFile({
- allowed: ['xls', 'xlsx'],
- maxFiles: 1,
- maxKBperFile: 20*1024,
- popup : {
- active : true, // false if you don’t like popup messages
- autoclose : true, // or false
- delay : 4000 // delay for close (in miliseconds), of course, if autoclose is set true
- }
- });*/
- });
- </script>
- </body>
- </html>
|