Your IP : 18.223.213.114


Current Path : /data/web/virtuals/51568/virtual/www/www/lidi/
Upload File :
Current File : /data/web/virtuals/51568/virtual/www/www/lidi/nacti.php

<?php
 
if (isSet($_POST["typ"])){$typ = trim($_POST["typ"]);} else {$typ = 'xxx';}  ?>
<div class="row">  
    <div class="col-7">    
        <div class="card m-2 shadow rounded-0">        
            <div class="card-header bg-primary h5 text-white  rounded-0">            
                <?php echo ($typ == 'u') ? "Aktualizace seznamu učitelů" : "Aktualizace seznamu žáků";?>            
            </div>        
            <div class="card-body rounded-0">          
                <form id="formSelectData" action="" method="POST" enctype="multipart/form-data" typ-souboru="<?= $typ?>">            
                    <input type="hidden" class=" rounded-0" name="typ" value="<?= $typ?>">            
                    <div class="form-group">                
                        <div class="custom-file rounded-0">                    
                            <input type="file" accept=".csv" class="custom-file-input rounded-0" name="fileCSV" id="fileCSV"  onchange="loadFile()"> 
                            <label id="fileCSVname" class="custom-file-label" for="fileCSV">                        vyber CSV soubor s daty
                            </label>                
                        </div>            
                    </div>                     
                    <div id="rowBtnSubmit" class="row d-none">              
                        <div class="col-8">                 
                            <button id="btnSubmit" class="btn btn-primary mt-3 mb-2 rounded-0" type="submit" >Ulož níže zobrazené do databáze
                            </button>                 
                        </div>              
                        <div class="col-4 text-right pt-4" id="idPocetCSV">
                        </div>            
                    </div>             	
                    <div id="divRok" class="d-none">                  
                        <div class="d-flex">                      
                            <div class="mr-2 pt-2">
                                <label for="importRok">Platí pro školní rok:
                                </label>
                            </div>                    
                            <div>                 	  	   
                                <select class="custom-select rounded-0" name="importRok" id="importRok" style="min-width: 150px;">                       	   
                                </select>                    
                            </div>	                 
                        </div>              
                    </div>               
                    <div id="file">
                    </div>            
                </form>                     
            </div>         
        </div>  
    </div>       
    <div class="col-5 rounded-0">    
        <div class="alert alert-info ">   
<?php
                  if ($typ == 'u') {?>            V Bakalářích v Evidence zvol <strong>Učitelé</strong> a následně <strong>Data / Export</strong>.
            <br>          Pro export vyber následující pole (<strong>označuj je v níže uvedeném pořadí</strong>):           
            <ul>                
                <li>intern_kod
                </li>                
                <li>prijmeni
                </li>                
                <li>jmeno
                </li>          
            </ul>          Exportuj v kódování UTF-8 do formátu CSV.Vyexportovaný soubor použij jako zdrojový pro "Aktualizace seznamu učitelů"      
            <?php } else { ?>           V Bakalářích v Evidence zvol <strong>Žáci</strong> a následně <strong>Data / Export</strong>.
            <br>          Pro export vyber následující pole (<strong>označuj je v níže uvedeném pořadí</strong>):           
            <ul>                
                <li>intern_kod
                </li>                
                <li>prijmeni
                </li>                
                <li>jmeno
                </li>                
                <li>trida
                </li>          
            </ul>          
            Exportuj v kódování UTF-8 do formátu CSV. Vyexportovaný soubor použij jako zdrojový pro "Aktualizace seznamu žáků"
            <p><strong>
              Pro import žáků je nutné mít založeny třídy pro aktuální školní rok (Roky - v zobrazení detailu roku).
            </strong></p>      
            <?php }?>   
        </div>
    </div>
</div>
<script src="js/jquery.csv.min.js"></script>
<script>
    async function loadFile() {
    
        let soubory = document.getElementById("fileCSV"),
            soubor = soubory.files[0],
            typ = $("#formSelectData").attr("typ-souboru"), 
            pokracovat = false;
        $("#idJakSeNacte").removeClass("d-none");
        if (soubory.files.length < 1) {
            $("#file").html('');
            $("#rowBtnSubmit").addClass("d-none");
            $("#rbJakNaplnit").addClass("d-none");
            $("#fileCSVname").html("");
        } else {
         //   $("#btnSubmit").removeClass("d-none");
            $("#rbJakNaplnit").removeClass("d-none");
            
            
            $("#fileCSVname").html(soubor.name);
            console.log("file");
            let obsah = await soubor.text(),
                data = $.csv.toObjects(obsah, {
                    separator: ';'
                }),
                propertyNames = Object.getOwnPropertyNames(data[0]), 
                zobrazData = '';
                pokracovat = (typ == 'u') ?  (propertyNames.length == 3) : (propertyNames.length == 4);
                if (pokracovat) {
                  pokracovat =  ( propertyNames[0].toLowerCase() == 'intern_kod') &&
                                (propertyNames[1].toLowerCase() == 'prijmeni') &&
                                (propertyNames[2].toLowerCase() == 'jmeno');
                  if (typ == 'z') {
                    pokracovat = propertyNames[3].toLowerCase() == 'trida';
                }
                }
                
                if  (!pokracovat){
                  zobrazData += `<div class="alert alert-danger rounded-0">
                    Zdá se, že zvolený soubor nemá očekávanou strukturu.<br>`;
                  if (typ == 'u'){
                    zobrazData += 
                    `<span class="form-text">První řádek by měl obsahovat názvy polí - pořadí je podstatné (<strong>intern_kod, prijmeni, jmeno</strong>)</span>`;
                  } else {
                    zobrazData += 
                  `<span class="form-text">První řádek by měl obsahovat názvy polí - pořadí je podstatné (<strong>intern_kod, prijmeni, jmeno, trida</strong>)</span>`; 
                  }
                    zobrazData +=  `</div>`;
                }
                
                if (pokracovat) {$("#rowBtnSubmit").removeClass("d-none");                
                  zobrazData += 
                  `<div class="alert alert-info form-text rounded-0 pl-0"><ul>`;
                  zobrazData += (typ == 'u') ?  
                  `<li>Pokud se některý z učitelů v nově importované tabulce nevyskytuje, bude jeho stávající záznam označen jako neaktivní. </li>` :
                  `<li>Pokud se některý z žáků v nově importované tabulce nevyskytuje, bude jeho stávající záznam označen jako neaktivní.</li>
                   <li>Pokud došlo ke změně označení třídy (jiný školní rok), projeví se u žáků tato změna.</li> 
                   <li>Při prvním přenosu ve školním roce se automaticky <strong>vytvoří seznam tříd - je vhodné ke třídám přiřadit třídní</strong></li>
                   `;
                  zobrazData += `<li>Pokud v zobrazené tabulce jsou místo nabodeníčkových znaků jiné, není kódování CSV souboru UTF8 (kódování nastavíš v exportu v Bakalářích).</li></ul></div>`;
                }  
                zobrazData +=
                `<div class="mt-4 " style="max-height: 360px; overflow-y: auto !important; "> 
                <table class="table table-striped table-sm">`;
            zobrazData += '<tr style="background-color: rgba(102, 204, 255, 0.5)"><td>#</td>';
            for (let i = 0; i < propertyNames.length; i++) {
                zobrazData += '<td>' + propertyNames[i] + '</td>';
            }
            zobrazData += '</tr>';
            for (let i = 0; i < data.length; i++) {
                zobrazData += `<tr><td>${i+1}</td>`;
                for (let j = 0; j < propertyNames.length; j++) {
                    zobrazData += '<td>' + data[i][propertyNames[j]] + '</td>';
                }
                zobrazData += '</tr>';
            }
            zobrazData += `</table>
            </div>`;
            $("#idPocetCSV").html('Záznamů: ' + data.length);
            $("#file").html(zobrazData);
            if (typ == 'z'){
              let dnes = new Date(), 
                  mesic = dnes.getMonth(),
                  rok = dnes.getFullYear();
              if (mesic > 6) {
                aktSkRok = rok + '/' + (rok + 1);
              } else {
                aktSkRok = (rok - 1) + '/' + rok;                
              }
              $.ajax({
                url: "www/lidi/zaci-skolniroky.php",
                type: 'POST',
                dataType: 'HTML',
                data: {
                  'aktSkRok': aktSkRok.trim(),
                },
                success: function (result) {
                    $("#importRok").html(result);
                    $("#divRok").removeClass("d-none");
                }
              });             
            
            
            }                                                       
        }
    }
 
    $("#formSelectData").on('submit', function (e) {
        e.preventDefault();
        $("#file").html(`
          <div class="alert alert-success row rounded-0">
            <div class="col-2">
             <div class="spinner-border spinner-border-sm" role="status">
               <span class="sr-only"></span>
             </div>
             </div>
             <div class="col-8 ">
               Provádím aktualizaci ....
             </div>
           </div>`); 
        let typ = $("#formSelectData").attr("typ-souboru");
        if (typ == 'z') {
          kodSkRok = $("#importRok").val();
        } else {
          kodSkRok = 0;
        }
        let fd = new FormData();
        fd.append('kodSkRok', 135);
        let osoby = document.getElementById('fileCSV').files[0];
        fd.append("fileCSV[]", osoby);
        $.ajax({
            url: "www/lidi/lidi-uloz-DB.php",
            type: "POST",
//            data: new FormData(this),
            data: fd,
            contentType: false,
            cache: false,
            processData: false,            
            success: function (result) {            
                $("#btnSubmit").addClass("d-none");
                $("#divRok").addClass("d-none");
                $("#rbJakNaplnit").addClass("d-none");
                $("#idJakSeNacte").addClass("d-none");
                $("#fileCSV").addClass("d-none");
                if (result.length < 25) {
                  $("#fileCSVname").html("");
                  $("#idPocetCSV").html("");                 
                  $("#file").html(`<div class="alert alert-success rounded-0">Aktualizace dokončena.</div>`); 
                  if (typ == 'u'){
                    $.ajax({
                      url: "www/lidi/ucitele-seznam.php",
                      type: 'POST',
                      dataType: 'HTML',
                      data: {},
                      success: function (result) {
                          $("#tabulkaUcitele").html(result);
                      }
                    }); 
                  }
                  if (typ == 'z'){
                    $.ajax({
                      url: "www/lidi/zaci-seznam.php",
                      type: 'POST',
                      dataType: 'HTML',
                      data: {},
                      success: function (result) {
                          $("#tabulkaZaci").html(result);
                      }
                    }); 
                  }                  
              
                }
            }
        });
    });
</script>