<?php
if(!isset($_SESSION)) {
    session_start();
}

$reservaId            = null;
$fecha                = null;
$bloqueActualCantidad = 0;

require_once($_SERVER['DOCUMENT_ROOT'].'/varios/varios.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/clases/Varios.Class.php');

if( Varios::isActiveSession()
    && Varios::hasModuleAccess(10)
) {
  
    $bodega     = null;
    $fecha      = null;
    $tipoCarga  = null;
    $cantidad   = null;

    if (
        isset($_SESSION['filtroGestionReservasReservaId'])
        && strlen($_SESSION['filtroGestionReservasReservaId']) > 0
    ) {
        $reservaIdCod  = filter_var( $_SESSION['filtroGestionReservasReservaId'], FILTER_SANITIZE_STRING );
        $reservaId     = filter_var( Varios::decodifica($reservaIdCod), FILTER_SANITIZE_NUMBER_INT);
    }

    if( isset($_SESSION['filtroGestionReservasBodega'])
        && strlen($_SESSION['filtroGestionReservasBodega']) > 0
    ) {
        $bodega     = filter_var( $_SESSION['filtroGestionReservasBodega'] , FILTER_SANITIZE_NUMBER_INT);
    }

  if( isset($_SESSION['filtroGestionReservasFecha'])
    && strlen($_SESSION['filtroGestionReservasFecha']) > 0
  ) {
    $fecha     = filter_var( $_SESSION['filtroGestionReservasFecha'] , FILTER_SANITIZE_STRING);
    $fecha     = Varios::formatFechaSQL2($fecha);
  }

  if( isset($_SESSION['filtroGestionReservasTipoCarga'])
    && strlen($_SESSION['filtroGestionReservasTipoCarga']) > 0
  ) {
    $tipoCarga  = filter_var( $_SESSION['filtroGestionReservasTipoCarga'] , FILTER_SANITIZE_STRING);
  }

  if( isset($_SESSION['filtroGestionReservasCantidad'])
    && strlen($_SESSION['filtroGestionReservasCantidad']) > 0
  ) {
    $cantidad  = filter_var( $_SESSION['filtroGestionReservasCantidad'] , FILTER_SANITIZE_NUMBER_INT);
  }

  if( parametrosValidos( $fecha, $bodega ) ) {
    require_once($_SERVER['DOCUMENT_ROOT'].'/clases/gestionReserva.Class.php');
    $reserva_obj            = new gestionReserva(null);
    $puertas_inf            = $reserva_obj->informacionBodegaPuertas($bodega);
    $bloques_inf            = $reserva_obj->informacionBloques($fecha);
    $capacidadRequerida_inf = $reserva_obj->recuperaBloquesUtilizados($tipoCarga, $cantidad);
    $capacidadRequerida     = $capacidadRequerida_inf['bloques'];
    ?>
    <script type="text/javascript" src="/js/gestionReservas/gestionReservasModificarDatos.js?p=1<?php echo _Version;?>"></script>

    <div class="col-xs-12 table-responsive">
    <table id="tablaReservas" class="table table-striped table-bordered">
        <thead>
            <tr>
                <th class="formato_izquierda" width="15%" style="font-size: 16px;">Bloque</th><?php
                foreach ($puertas_inf as $value) {
                    imprimirCabecera( $value );
                }?>
            </tr>
        </thead>
        <tbody><?php
            foreach ($bloques_inf as $valBloque) {?>
                <tr>
                    <td><?php echo '<span style="font-size: 14px">'.'[ '.$valBloque['bloq_inicio_formato'].' - '.$valBloque['bloq_fin_formato'].' ]'.'</span><BR>';?></td><?php
                    bloqueVerReservas( $reserva_obj, $puertas_inf, $valBloque, $fecha, $capacidadRequerida );
                    ?>
                </tr><?php
            }?>
        </tbody>
    </table>
    </div>
      <?php
  }
} else {
  echo 'Seleccione la Fecha y la Bodeja';
}

function imprimirCabecera( $value ) {?>
    <th width="10%"><?php
        $color     = '#F00';
        $prioridad = $value['puer_prioridad'];

        if( strtoupper($prioridad) == 'PRIORIDAD MEDIA' ) {
            $color = '#E7AB0B';
        } else if( strtoupper($prioridad) == 'PRIORIDAD BAJA' ) {
            $color = '#12A21D';
        }

        echo '<span style="font-size: 16px">'.$value['puer_bodega_nombre'].'</span><br>';
        echo '<span style="font-size: 14px">'.$value['puer_codigo'].'</span><BR>';
        echo '<span style="color: '.$color.'">'.$value['puer_prioridad'].'</span>';
        ?>
    </th><?php
}

function parametrosValidos( $fecha, $bodega ) {
  if( strlen($fecha) == 0 ) {
    echo 'Seleccione una Fecha';
    return false;
  }
  return true;
}

function hasReserves( $bloquePuerta_inf ) {
    return $bloquePuerta_inf['rese_cantidad_bloque'] > 0;
}

function bloqueVerReservas( $reserva_obj, $puertas_inf, $valBloque, $fecha, $capacidadRequerida ) {
    $v_cantidad = 0;
    global $reservaId;

    foreach ($puertas_inf as $valPuerta) {
        $v_cantidad++;
        $bloqId           = $valBloque['bloq_UID'];
        $puertaId         = $valPuerta['puer_UID'];
        $bloquePuerta_inf = $reserva_obj->informacionBloqueReservaModificarVerificar($bloqId, $puertaId, $fecha, $reservaId, 0);
        
        if( $bloquePuerta_inf[0] == 'Inicio' ) {
            if( hasReserves( $bloquePuerta_inf ) ) {
                $bloqueCantidad = $bloquePuerta_inf['rese_cantidad_bloque'];
                if( $bloqueCantidad > 0 ) {
                    ?>
                    <td style="background-color: <?php echo $bloquePuerta_inf['color_fondo'];?>;
                                border: 3px solid <?php echo $bloquePuerta_inf['color_borde'];?>;"
                        rowspan="<?php echo $bloqueCantidad?>"><?php
                    showCellInformacion( $bloquePuerta_inf );
                    ?>
                    </td><?php
                }
            }
        } else if( $bloquePuerta_inf[0] == 'Libre' ) {
            $bloqueActual = $bloquePuerta_inf['actual'];
            showNew( $valPuerta, $valBloque, $bloquePuerta_inf, $capacidadRequerida, $bloqueActual );
        }

    }
}

function showNew( $valPuerta, $valBloque, $bloquePuerta_inf, $capacidadRequerida, $bloqueActual ) {
    global $fecha, $bloqueActualCantidad;

    $bloqId                = $valBloque['bloq_UID'];
    $puertaId              = $valPuerta['puer_UID'];
    $cantidadBloquesLibres = $bloquePuerta_inf['cantidad_bloques_libres'];
    
    $bodegaLibre = false;
    $puertaLibre = false;

    $cadena   = Varios::codifica('gestionReservasReasignar'.$puertaId.'-'.$bloqId._TOKEN);
    $token    = Varios::generaToken($cadena);

    $estiloBloque       = '';
    $bloqueActualTexto  = '';
    if( $bloqueActual == 'Si' ) {
        $estiloBloque = '; background-color: #D4E6F1; border: solid 1px #1F618D;';
        $bloqueActualTexto = '<br>Reserva actual';
    }

    
    $textoConfirmacion = 
                         ' - Fecha: <b>'.Varios::formatFechaYYMMDDtoDDMMYY($fecha).'</b><br>'.
                         ' - Bodega: <b>'.$valPuerta['puer_bodega_nombre'].'</b><br>'.
                         ' - Puerta: <b>'.$valPuerta['puer_codigo'].'</b><br>'.
                            ' - Bloque Inicial: <b>'.$valBloque['bloq_inicio_formato'].':'.$valBloque['bloq_fin_formato'].'</b><br>'.
                            ' - Cantidad de bloques reasignados: <b>'.$capacidadRequerida.'</b><br>'.
                         '';

    if( $valPuerta['para_bodega_estado'] == 1 ) {
        $bodegaLibre = true;    
    }
            
    if( $valPuerta['puer_estado'] == 1 ) {
        $puertaLibre = true;    
    }

    if( 
        $bodegaLibre && $puertaLibre
        && $cantidadBloquesLibres >= $capacidadRequerida
        && $cantidadBloquesLibres > 0
    ) {
        $botonTexto = 'Reasignar';
        $botonTipo  = 'btn-outline-primary';
        
        ?>
        <td style="text-align: center; <?php echo $estiloBloque;?>"><?php
            $textoAccion = 'Reasignar';
            if( $bloqueActual == 'Si' 
            && $bloqueActualCantidad == 0
            ) {
                $bloqueActualCantidad++;
                $botonTexto  = 'Actualizar';
                $textoAccion = 'Actualizar';
                $botonTipo   = 'btn-success';    
            }    
            
            if ( Varios::hasModuleActionAccess(6, 6) ) {?>
                <button class="mr-2 mb-2 btn <?php echo $botonTipo;?>" onclick="gestionReservasReasignarConfirmar('<?php
                    echo Varios::codifica($token);?>', '<?php
                    echo Varios::codifica($puertaId);?>', '<?php
                    echo Varios::codifica($bloqId);?>', '<?php
                    echo Varios::codifica($cantidadBloquesLibres);?>', '<?php
                    echo $textoConfirmacion;?>', '<?php echo $textoAccion;?>')"><i style="font-size:15px;color:white;"></i> <?php echo $botonTexto;?></button><?php
            }
            echo $bloqueActualTexto;
            ?>
        </td><?php
    } else if( 
        $bodegaLibre && $puertaLibre
        && $cantidadBloquesLibres > 0 
    ) {
        ?>
        <td style="text-align: center; <?php echo $estiloBloque;?>">
            <?php
            
            echo 'Bloques disponibles: '.$cantidadBloquesLibres;
            echo '<br>Requeridos: '.$capacidadRequerida;
            echo $bloqueActualTexto;
            ?>
        </td><?php
    } else if(
        $bodegaLibre && $puertaLibre
        && $cantidadBloquesLibres > 0
    ) {
        ?>
        <td style="text-align: center;">
            <?php            
            echo 'Bloques disponibles: '.$cantidadBloquesLibres;
            echo '<br>Requeridos: '.$capacidadRequerida;            
            ?>
        </td><?php
    } else if( !$bodegaLibre && !$puertaLibre ) {?>
        <td style="text-align: center;">
            <span style='color: #F00'>Bodega y Puerta Inactivas</span>
        </td><?php
    } else if( !$bodegaLibre ) {?>
        <td style="text-align: center;">
            <span style='color: #F00'>Bodega Inactiva</span>
        </td><?php
    } else if( !$puertaLibre ) {?>
        <td style="text-align: center;">
            <span style='color: #F00'>Puerta Inactiva</span>
        </td><?php
    }
}

function showCellInformacion( $bloquePuerta_inf ) {
    showCellInformacionTextOption1( $bloquePuerta_inf );
}

function showCellInformacionTextOption1( $bloquePuerta_inf ) {
    echo '<strong>'.$bloquePuerta_inf['pers_razon_social'].'</strong><br/>'.
        '<span>'.$bloquePuerta_inf['rese_estado'].'</span><br/>';
}

?>