123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- <?php
- require_once("../include/constantes.php");
- require_once("../include/util.php");
- require_once("../include/bd_pdo.php");
- require_once("../classes/ValidaSesion.php");
- require_once("../classes/MainMenu.php");
- $menu = 10;
- $submenu = 102;
- //--- Objeto para validar usuario. El id de alumno lo lee desde sesión
- $objSesion = new ValidaSesion($pdo, $submenu, GEMA);
- if(!$objSesion->tieneAcceso() || !$objSesion->puedeEditar()){
- header("Location: main.php?error=3");
- exit();
- }
-
- function existeFecha($arr, $id){
- foreach($arr as $fecha){
- if($fecha["TipoFechaImportante_id"] == $id)
- return true;
- }
- return false;
- }
- ?>
- <!DOCTYPE html>
- <html lang="es" prefix="og: http://ogp.me/ns#">
- <head>
- <title>GEMA - 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/jquery-ui.css" type="text/css">
- <link rel="stylesheet" href="../css/month-picker.css" type="text/css">
- <link rel="stylesheet" href="../css/calendar.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, GEMA, "Asignación de materias desde Moodle");//usr, menu, pdo, sist
- $menuObj->printMenu();
-
-
- $stmt = $pdo->prepare('Select * from fs_fechasmateriasalumno(:periodo, NULL,'.GEMA.')');//devuelve qué tipos de fechas están activas en el periodo hoy
- $stmt->bindPAram(":periodo", $_SESSION["periodo_id"]);
- if(!$stmt->execute()){
- $errorDesc = "Ocurrió un error al obtener las fechas del periodo";
- }else{
- $fechas_rs = $stmt->fetchAll();
- }
- $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 de los alumnos."; break;
- case 1: $errorDesc = "No tienes permisos para acceder a esa sección."; break;
- case 2: $errorDesc = "El archivo supera los 10MB y no se puede cargar."; break;
- case 3: $errorDesc = "No es una extensión válida. Solo se permiten archivos XLS o XLSX."; break;
- case 4: $errorDesc = "No tienes permisos para acceder a esa sección."; break;
- }
- }
- ?>
- <main class="container-fluid content marco">
-
- <?php include_once("../include/errorMessage.php");?>
-
- <?php include("../include/periodoCambio.php");?>
- <?php if ($_SESSION["sgi_administrador"]){ ?>
- <p class="text-right"><a href="materiasalumnos.php" class="btn btn-outline-secondary"><span class="ing-mas"></span> Asignación por clave</a></p>
- <?php } ?>
-
- <!-- Filtro -->
- <div class="row">
- <div class="col-12">
-
- <form action="asignamateria.php" method="post" onsubmit="return validaForm()" enctype="multipart/form-data" id="formaArchivos">
- <div class="form-box">
- <div class="form-box">
- <div class="form-group row">
- <label for="archivo" class="col-12 col-sm-6 col-form-label">Selecciona el archivo con la información de los alumnos que serán importados</label>
- <div class="col-12 col-sm-6 mb-3" id="divDocumento">
- <input type="file" name="archivo" id="archivo" required="required" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
- <div class="invalid-feedback">Selecciona un archivo.</div>
- </div>
- </div>
- </div>
- </div>
- <div class="form-group row mb-4">
- <div class="col-12 text-center">
- <button type="button" class="btn btn-outline-primary" id="btn-submit"><?php echo $ICO["aceptar"]; ?> Asignar materias</button>
- </div>
- </div>
- </form>
- </div>
- </div>
- <!-- end Filtro -->
- <div class="row collapse" id="agregados">
- <div class="col-12">
- <div class="alert alert-success">
- <span class="ing-aceptar ing-fw float-left" style="font-size:2em"></span>
- <p class="pt-1" style="margin-left:60px">Se agregaron correctamente <b><span class="total">0</span></b> registros</p>
- </div>
- </div>
- </div>
- <div class="row" id="omitidos" style="display: none;">
- <div class="col-12">
- <div class="row">
- <div class="col-12">
- <div class="alert alert-warning">
- <span class="ing-importante ing-fw float-left" style="font-size:2em"></span>
- <p class="pt-1" style="margin-left:60px">Los siguientes <b><span class="total">0</span></b> registros tuvieron errores al ser guardados:</p>
- </div>
- </div>
- </div>
- <table class="table table-sm table-striped table-white">
- <thead class="thead-dark">
- <tr>
- <th>Clave</th>
- <th style="width:60%">Mensaje</th>
- </tr>
- </thead>
- <tbody>
- </tbody>
- </table>
- </div>
- </div>
- </main>
- <!--- FOOTER--->
- <?php require_once("../include/footer.php"); ?>
-
- </div>
-
- <script src="../js/jquery.min.js"></script>
- <script src="../js/jquery-ui.js"></script>
- <script src="../js/datepicker-es.js"></script>
- <script src="../js/bootstrap/popper.min.js"></script>
- <script src="../js/bootstrap/bootstrap.min.js"></script>
- <script src="../js/fechas.js"></script>
- <script src="../js/sidebarmenu.js"></script>
- <script src="../js/custominputfile.min-es.js"></script>
- <script src="../js/datalist.js"></script>
- <script src="../js/month-picker.js"></script>
- <script>
- setDatalist("#periodo", <?php echo $_SESSION["periodo_id"]; ?>);
- $(document).on('click', '#dlPeriodo ul li' ,function(){
- $("#formaPeriodo").submit();
- });
- /*$(document).on( "click", ".btn-reset", function(event){
- var forma =$(this).parents("form");
- forma.find("input[type=text]").val("");
- });*/
- </script>
-
- <script>
- function validaForm(){
- var error = false;
- invalidDatalist("#filter_plan", false);
- $(".is-invalid").removeClass("is-invalid");
- if( $("#alumnos").children().length <= 0){
- $("#alumnos").addClass("is-invalid");
- error = true;
- }
- if( $("#filter_plan").val() == "" ){
- invalidDatalist("#filter_plan", true);
- error = true;
- }
- $("#alumnos option").prop('selected', true);
- return !error;
- }
- function creaRenglon(omitido){
- return '<tr> \
- <td class="clave text-center">'+omitido["clave"]+'</td>\
- <td class="desc">'+omitido["desc"]+'</td>\
- </tr>';
- }
- $(document).ready(function(){
- $("#btn-submit").click(function(){
- $("#btn-submit").attr("disabled", true);
- var datos = $.customFile.serialize('#formaArchivos');
- $.ajax({
- url: './action/materiasalumnos_importar.php',
- type: 'POST',
- contentType: false,
- cache: false,
- processData:false,
- data: datos,
- dataType: 'json',
- timeout: 1000*60*10,
- success: function(result) {
- console.log(result);
- if(result["error"]!= "" && result["error"] !== undefined){
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(result["error"]);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }else{
- if(parseInt(result["insertados"]) >0){
- $("#agregados").collapse('show');
- $("#agregados .total").text(result["insertados"]);
- }else{
- $("#agregados").collapse('hide');
- }
- if(parseInt(result["omitidosArr"].length) >0){
- $("#omitidos").show();
- $("#omitidos .total").text(result["omitidosArr"].length);
- $("#omitidos tbody").html( "");
- for(var i = 0 ; i<result["omitidosArr"].length; i++){
- console.log(result["omitidosArr"][i]);
- $("#omitidos").find("tbody").append( creaRenglon(result["omitidosArr"][i]) );
- }
- }else{
- $("#omitidos").hide();
- }
- }
- $("#btn-submit").attr("disabled", false);
- },
- error: function(jqXHR, textStatus, errorThrown ){
- $("#btn-submit").attr("disabled", false);
- $("#errorBox").collapse('show');
- $("#errorBox_text").html("Error al cargar el archivo. "+errorThrown);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }
- });
- });
- $('#archivo').customFile({
- type : 'all',
- //allowed : ['xls', 'xlsx'],
- allowed : ['csv'],
- maxFiles : 1,
- maxKBperFile: 1024*10,
- multiple: false,
- addContainerAfter : $('#divDocumento'),
- messages : {
- errorType : 'No son permitidos ese tipo de archivos',
- errorFileKB: 'El archivo excede los 10MB'
- },
- popup: {
- active: false,
- autoclose : false
- },
- callbacks : {
- onComplete : function(app){
- if(app.itemFileList.length > 0)
- $('#divDocumento').hide();
- },
- beforeRead : function(file){
- if ($('#alertaDocumento').length > 0)
- $('#alertaDocumento').remove();
- },
- beforeRemove : function(item){
- $("#divDocumento").show();
- $("#omitidos").hide();
- $("#agregados").collapse('hide');
- $("#btn-submit").attr("disabled", false);
- },
- onError : function(file,msg){
- var lista = '';
- for (var cont = 0; cont < msg.length; cont++){
- lista += '<li>' + msg[cont] + '</li>';
- }
- $('#divDocumento').after('<div id="alertaDocumento" class="alert alert-danger alert-dismissible fade show">\
- <button type="button" class="close" data-dismiss="alert"><span class="ing-cancelar small"></span></button>\
- <div class="d-flex flex-column">\
- <div class="indivisa-text-bold">¡Error!</div>\
- <ul class="mb-0">' + lista + '</ul>\
- <div>El archivo que intentaste cargar es:<span class="indivisa-text-bold ml-1">' + file.name + '</span></div>\
- </div>\
- </div>');
- $('#divMainDocumento').show();
- },
- onSuccess : function(item, callback){
- $('#divMainDocumento').hide();
- var options = $('#divDocumento').siblings('div.cif-file-container.cif-container-all-type').children('div.cif-file-row').children('div.cif-parent').children('div');
- $(options[1]).click(function() { $('#divMainDocumento').hide(); });
- }
- }
- });
- });
- </script>
- </body>
- </html>
|