123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 |
- <?php
- session_start();
- require_once 'classes/Template.php';
- require_once 'classes/MainMenu.php';
- require_once 'classes/Concurso.php';
- require_once 'classes/Etapa.php';
- require_once 'classes/Proyecto.php';
- require_once 'classes/Asignacion.php';
- require_once 'classes/ValidaSesion.php';
- require_once 'include/bd_pdo.php';
- //CONSTANTES Y VARIABLES GLOBALES
- $menu = 21;
- $submenu = 213;
- $titulo = 'Fechas del concurso ';
- $errorBD = false;
- $actual = null;
- $etapaRevision['idetapa'] = 0;
- function fecha2Array($fecha_str){
- $tmp = str_replace(array("{", "}"), array("","") ,$fecha_str);
- return explode(",", $tmp);
- }
- function imprimeFecha($fechas_rs, $row, $j = 0){
- if($row < count($fechas_rs)){
- if(isset($fechas_rs[$row]) && is_array($fechas_rs[$row])){
- $fechasArr = fecha2Array($fechas_rs[$row]["fecha"]);
- if($j < count($fechasArr) && isset($fechasArr[$j])){
- $temp = new DateTime( $fechasArr[$j] );
- return date($temp->format('d/m/Y'));
- }
- }
-
- }
- return "";
- }
- if (is_null($pdo) || !isset($_SESSION['usuario_id']))
- ValidaSesion::salirPagina();
- else{
- if (is_null($pdo))
- $errorBD = true;
- if (isset($_SESSION['actual']))
- $actual = unserialize($_SESSION['actual']);
- if (!$errorBD)
- $etapaRevision = Etapa::buscaEtapaXClave($pdo, 'REVISION');
- /*if (isset($etapaRevision)){
- $fechasRevision = Concurso::getFechaXEtapa($pdo, $actual->getId(), $etapaRevision);
- if (isset($fechasRevision['fechas'])){
- date_default_timezone_set('America/Mexico_City');
- $hoy = strtotime(date('Y-m-d'));
- if ($hoy <= strtotime(date($fechasRevision['fechas'][1]->format('Y/n/d'))))
- $revisionVisible = true;
- else
- $revisionVisible = false;
- }
- }*/
- if(isset($_SESSION['usuario_id'])){
- if (!$errorBD)
- $objSesion = new ValidaSesion($pdo,$submenu);
- } else
- ValidaSesion::salirPagina();
- }
- ?>
- <!doctype html>
- <html lang="es">
- <head>
- <title><?php echo $titulo . ' - '; ?>CIDIT</title>
- <?php Template::getCSS(array('elementos.css', 'jquery-ui.css', 'calendar.css', 'secciones/fechas.css')); ?>
- <style>
-
- </style>
- </head>
- <body>
- <?php Template::agregaLoading();
- $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo);
- $menuObj->printMenu();
- Template::getNavInfo(); ?>
- <main class="margen-principal mb-4">
- <div class="d-flex flex-row justify-content-between align-items-center my-3">
- <h1 class="mb-0"><?php echo $titulo; ?><span class="small text-azul6 ml-1"><?php if(isset($actual)) echo '(' . $actual->getNombre() . ' CIDIT)'; ?></span></h1>
- </div>
- <?php if (isset($objSesion) && $objSesion->tieneAcceso()){
- $etapas = Etapa::getEtapaXID($pdo);
- $rangos = array(true, false, true, false, false, false, true, false);
- $multiples = array(true, true, false, false,false, false, false, false);
- ?>
-
- <div class="p-4">
- <div class="row">
- <div class="col-12 mt-3">
- <form action="" method="post" id="formFechas">
- <input type="hidden" id="concurso" value="<?php echo $actual->getId();?>">
- <div class="accordeon">
- <?php
- $cont = 0;
- foreach($etapas as $etapa) {
- $fecha_rs = Etapa::getFechasXEtapa($pdo, $actual->getId(), $etapa["idetapa"]);
- ?>
-
- <div class="form-group row border-bottom border-primary">
- <label class="col-12 col-sm-4 col-form-label titulo text-right"><?php echo $etapa["etapa"];?></label>
- <div class="col-12 col-sm-8 etapa" id="etapa_<?php echo $etapa["idetapa"];?>" data-id="<?php echo $etapa["idetapa"];?>">
- <div class="d-flex flex-column mb-3 fechas-list">
- <?php
- $i=0;
- do{
- ?>
- <div class="d-flex flex-row fechas-data">
- <div class="input-group date-picker-box">
- <input type="text" name="fecha_ini_<?php echo strtolower($etapa["clave"]);?>" class="form-control fecha_ini date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly="readonly" value="<?php echo imprimeFecha($fecha_rs, $i, 0);?>" data-orden="1">
- <div class="input-group-append">
- <button class="btn btn-outline-primary btn-borrar px-3" type="button"><span class="ing-borrar"></span></button>
- </div>
- </div>
- <?php if($rangos[$cont]){ ?>
- <div class="px-4 pt-2 titulo">al</div>
- <div class="input-group date-picker-box">
- <input type="text" name="fecha_fin_<?php echo strtolower($etapa["clave"]);?>" class="form-control fecha_fin date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly="readonly" value="<?php echo imprimeFecha($fecha_rs, $i, 1);?>" data-orden="2">
- <div class="input-group-append">
- <button class="btn btn-outline-primary btn-borrar px-3" type="button"><span class="ing-borrar"></span></button>
- </div>
- </div>
- <?php } ?>
- <?php if($multiples[$cont]){ ?>
- <div class="ml-4 btnList">
- <div class="d-inline-flex flex-column justify-content-center align-items-center btnIcon pointer mt-2 mx-1 btn-quitar invisible">
- <label class="ing-menos navIcon text-danger mb-0 mx-2 pointer"></label>
- <label class="text-primary small pointer mb-0">Quitar</label>
- </div>
- </div>
- <?php } ?>
- </div>
- <?php
- $i++;
- }while($i<count($fecha_rs));
- ?>
- </div>
- <?php if($multiples[$cont]){ ?>
- <div class="d-inline-flex flex-column justify-content-center align-items-center btnIcon pointer mb-2 mx-1 btn-agregar">
- <label class="ing-mas navIcon text-success mb-0 mx-2 pointer"></label>
- <label class="text-primary small pointer mb-0">Agregar</label>
- </div>
- <?php }?>
- </div>
- </div>
- <?php
- $cont ++;
- }//foreach ?>
- </div>
- <div class="form-group row">
- <div class="col-12 text-center">
- <button type="button" class="btn btn-outline-primary btn-enviar"><span class="ing-aceptar navIcon ing-fw"></span> Guardar</button>
- </div>
- </div>
- </form>
- </div>
- </div>
- </div>
-
- <div class="modal fade modalMarco" id="modalAviso">
- <div class="modal-dialog modal-dialog-centered">
- <div class="modal-content p-3">
- <div class="modal-body d-flex flex-column justify-content-center align-items-center">
- <button type="button" class="cerrar align-self-end m-0" data-dismiss="modal"><div class="ing-cancelar"></div></button>
- <div id="avisoMsg" class="text-primary display-5 text-center mb-3"></div>
- <div id="avisoIcon" class="display-1 mb-4"></div>
- </div>
- </div>
- </div>
- </div>
-
- <?php } else { ?>
- <div class="w-100 text-left my-3">
- <h1 class="mb-0"><?php echo $titulo; ?></h1>
- </div>
- <div class="fondoAnuncio mt-5">
- <div class="d-flex flex-column justify-content-center align-items-center">
- <div class="d-flex flex-column justify-content-center align-items-center">
- <div class="text-primary text-center mt-5 tit">¡Lo sentimos!</div>
- <div class="text-primary text-center small my-3 msg">No tienes accceso a éste sitio</div>
- <div class="ing-negar display-1 text-danger mb-4"></div>
- </div>
- </div>
- <?php } ?>
- </main>
- <div style="isolation: isolate;">
- <?php Template::footer(); ?>
- </div>
- <?php Template::getJS(array("jquery-ui.js", "datepicker-es.js")); ?>
- <script>
- var datepickerOptions = { dateFormat: "dd/mm/yy", changeMonth: true};
-
- $(document).ready(function(){
-
- actualizaQuitar();
-
- $(".date-picker" ).datepicker(datepickerOptions);
- $(".date-picker" ).datepicker( $.datepicker.regional[ "es" ] );
-
- $(".btn-borrar").click(function(){
- $(this).parents(".input-group").find(".date-picker").val("");
- });
-
- //agrega nueva fecha
- $(".btn-agregar").click(function(){
- var fechas_list = $(this).parent().find(".fechas-list");
-
- fechas_list.find(".fechas-data:first-child").find('.date-picker.hasDatepicker').removeClass('hasDatepicker');
- var cloned = fechas_list.find(".fechas-data:first-child").clone(true).appendTo(fechas_list);
-
- cloned.find("input").val("");
- cloned.find("input.date-picker").prop("id", "");//el id se genera solo, se debe quitar para que no se repita
- cloned.find(".date-picker" ).datepicker(datepickerOptions);
- cloned.find(".date-picker" ).datepicker( $.datepicker.regional[ "es" ] );
- fechas_list.find(".fechas-data:first-child").find('.date-picker').datepicker(datepickerOptions);
- fechas_list.find(".fechas-data:first-child").find('.date-picker').datepicker($.datepicker.regional[ "es" ]);
-
- fechas_list.find(".btnList .btn-quitar").removeClass("invisible");
- });
-
- $(".btn-quitar").click(function(){
- var fechas_list = $(this).parents(".fechas-data");
- var etapa = $(this).parents(".etapa");
- fechas_list.remove();
- if(etapa.find(".fechas-data").length - 1 < 1){
- etapa.find(".btn-quitar").addClass("invisible");
- }
- });
-
- $(".btn-enviar").click(function(){
- var etapasObj = [];
- if(validaFechas()){
- //recorre cada etapa
- $.each($('.etapa'), function(){
- var id = $(this).data("id");
- var fechasArr = [];
- $.each($(this).find('.fechas-data'), function(){
- var rango = [];
- var fecha_ini = $(this).find(".fecha_ini").val();
- if(fecha_ini != "")
- rango.push(fecha_ini);
-
- var fecha_fin = $(this).find(".fecha_fin").val();
- if(fecha_fin !== undefined && fecha_fin != ""){
- rango.push(fecha_fin);
- }
- fechasArr.push(rango);
- });
-
- //ordena fechas Ascendente
- fechasArr.sort(function(a,b){
- return new Date(a[0]) - new Date(b[0]);
- });
- var etapa = {
- "id": id,
- "fechas": fechasArr
- }
- etapasObj.push(etapa);
- });
-
-
- $.ajax({
- url: "./action/fechas_action.php",
- type: 'POST',
- dataType: 'json',
- data: { concurso: $("#concurso").val(), json: JSON.stringify(etapasObj)},
- beforeSend: function(x) {
- if (x && x.overrideMimeType) {
- x.overrideMimeType("application/j-son;charset=UTF-8");
- }
- },
- success: function(result) {
- if(result["error"]!= "" && result["error"] !== undefined){
- $("#avisoMsg").text(result["error"]);
- $("#avisoMsg").removeClass("text-primary").addClass("text-danger");
- }else{
- $("#avisoMsg").text(result["ok"]);
- $("#avisoMsg").addClass("text-primary").removeClass("text-danger");
- }
- $("#modalAviso").modal("show");
- },
- error: function(jqXHR, textStatus, errorThrown ){
- $("#avisoMsg").text("Ocurrió un error al guardar las fechas");
- $("#avisoMsg").removeClass("text-primary").addClass("text-danger");
- }
- });//ajax
-
- }
- });
- });
-
- function actualizaQuitar(){
- $.each($('.etapa'), function(){
- if($(this).find(".fechas-data").length <= 1){
- $(this).find(".btn-quitar").addClass("invisible");
- }else{
- $(this).find(".btn-quitar").removeClass("invisible");
- }
- });
- }
-
- function diaAAno(fecha_str){//de dd/mm/yyyy a yyyy-mm-dd
- if(fecha_str.charAt(2) == "/" && fecha_str.charAt(5) == "/"){//dd/mm/yyyy
- var fecha_arr = fecha_str.split("/");
- return fecha_arr[2]+"-"+fecha_arr[1]+"-"+fecha_arr[0];
- }
- return fecha_str;
- }
-
- function fechaMayor(fechaI, fechaF) {//cual es mayor >0 I mayor <0 F mayor
- return (Date.parse(diaAAno(fechaI)) - Date.parse(diaAAno(fechaF)));
- }
-
- function validaRangos(row){
-
- var fechas = row.find(".date-picker");
-
- if(fechas.length > 1){
- var fecha_ini = row.find(".fecha_ini");
- var fecha_fin = row.find(".fecha_fin");
- $(fecha_ini).removeClass('is-invalid');
- $(fecha_fin).removeClass('is-invalid');
- if($(fecha_ini).val() != "" && $(fecha_fin).val()!= ""){
- if( fechaMayor($(fecha_ini).val(), $(fecha_fin).val() ) > 0){
- $(fecha_ini).addClass('is-invalid');
- $(fecha_fin).addClass('is-invalid');
- return false;
- }
- }else if( !($(fecha_ini).val() == "" && $(fecha_fin).val()== "")){
- if($(fecha_ini).val() == "")
- $(fecha_ini).addClass('is-invalid');
- if($(fecha_fin).val() == "")
- $(fecha_fin).addClass('is-invalid');
- return false;
- }
- }
- return true;
- }
-
- function validaFechas(){
- var ok = true;
- $.each($('.fechas-data'), function(){
- ok = validaRangos($(this)) && ok;
- });
-
- var fecha_creacion = $("#etapa_5").find(".date-picker");
- var fecha_apertura = $("#etapa_6").find(".date-picker");
-
- fecha_creacion.removeClass('is-invalid');
- fecha_apertura.removeClass('is-invalid');
- if(fecha_creacion.val() != "" && fecha_apertura.val() != ""){
- if(fechaMayor(fecha_apertura.val(), fecha_creacion.val()) <= 0 ){
- fecha_creacion.addClass('is-invalid');
- fecha_apertura.addClass('is-invalid');
- ok = false;
- }
- }
- return ok;
- }
-
- </script>
- </body>
- </html>
|