<?php
$r="../";
require_once($r."inc/funciones.php");
$title='Pedidos en ruta';
validNotSession($r);
$spe=$_SESSION['perfil'];
$mysqli=connectDB($r);
roleaccess(1500);

function tiempoFormato($seg){
    if(!$seg || $seg<=0) return '0 seg';

    $h=floor($seg/3600);
    $m=floor(($seg%3600)/60);
    $s=$seg%60;

    if($h>0){
        return $h.':'.str_pad($m,2,'0',STR_PAD_LEFT).':'.str_pad($s,2,'0',STR_PAD_LEFT).' h';
    }

    if($m>0){
        return $m.':'.str_pad($s,2,'0',STR_PAD_LEFT).' min';
    }

    return $s.' seg';
}

if(isset($_POST['id']) && isset($_POST['estado'])){
    $id=$_POST['id'];
    $estado=$_POST['estado'];
    $stmt=$mysqli->prepare("UPDATE z_pedidos SET ruta_estado=? WHERE id=?");
    $stmt->bind_param("si",$estado,$id);
    $stmt->execute();
    echo json_encode(["ok"=>true]);
    exit;
}

if(isset($_GET['tracking'])){
    $idpedido=$_GET['tracking'];
    $res=$mysqli->query("SELECT * FROM z_rutas_tracking WHERE idpedido='$idpedido' LIMIT 1");
    $data=$res->fetch_assoc();

    $tiempoReal=0;
    if(!empty($data['fecha_inicio']) && !empty($data['fecha_llegada_real'])){
        $tiempoReal=strtotime($data['fecha_llegada_real'])-strtotime($data['fecha_inicio']);
    }

    $data['tiempo_estimado_formato']=tiempoFormato($data['tiempo_estimado_seg']);
    $data['tiempo_real_formato']=tiempoFormato($tiempoReal);

    echo json_encode($data);
    exit;
}

$estadoFiltro=isset($_GET['estado'])?$_GET['estado']:'';
$desde=isset($_GET['desde'])?$_GET['desde']:date('Y-m-d',strtotime('-7 days'));
$hasta=isset($_GET['hasta'])?$_GET['hasta']:date('Y-m-d');

$where="WHERE DATE(fecha) BETWEEN '$desde' AND '$hasta'";
if($estadoFiltro!=''){
    $where.=" AND ruta_estado='$estadoFiltro'";
}
?>
<?php include $r."inc/head.php"; ?>
<body class="fixed-nav sticky-footer sidenav-toggled bg-dark" id="page-top">
<?php include $r."inc/nav.php"; ?>
<div class="content-wrapper">
<div class="container-fluid">
<h3 class="text-center"><?= $title; ?></h3>

<form method="GET" class="row mb-3">
<div class="col-md-3">
<select name="estado" class="form-control">
<option value="pendiente" <?=($estadoFiltro=='pendiente')?'selected':''?>>Pendiente</option>
<option value="ruta" <?=($estadoFiltro=='ruta')?'selected':''?>>En ruta</option>
<option value="finalizado" <?=($estadoFiltro=='finalizado')?'selected':''?>>Finalizado</option>
<option value="">-- Todos --</option>
</select>
</div>
<div class="col-md-3">
<input type="date" name="desde" value="<?=$desde?>" class="form-control">
</div>
<div class="col-md-3">
<input type="date" name="hasta" value="<?=$hasta?>" class="form-control">
</div>
<div class="col-md-3">
<button class="btn btn-primary w-100">Filtrar</button>
</div>
</form>

<div class="card mb-3">
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable">
<thead>
<tr>
<th>Nombre</th>
<th>Cliente</th>
<th>Domiciliario</th>
<th>Fecha creación</th>
<th>Fecha entrega</th>
<th>Código</th>
<th>Estado</th>
<th></th>
</tr>
</thead>
<tbody>
<?php
$sql=$mysqli->query("SELECT * FROM z_pedidos $where ORDER BY id DESC");
while($row2=$sql->fetch_assoc()){
?>
<tr>
<td><?php $usuario=suser($row2["iduser"]); echo $usuario['nombre']; ?></td>
<td><?php $cliente=sclien($row2["idcliente"]); echo $cliente['nombre']; ?></td>
<td><?php $rutero=srute($row2["idrutero"]); echo $rutero['nombre']; ?></td>
<td><?php echo $row2["fecha"]; ?></td>
<td><?php echo $row2["fechaentrega"]; ?></td>
<td><?php echo $row2["codigopedido"]; ?></td>
<td><?php echo ucfirst($row2["ruta_estado"]); ?></td>
<td width="80px">
<a href="#" class="text-primary h5 btnEstado" data-id="<?=$row2['id']?>" data-estado="<?=$row2['ruta_estado']?>"><i class="fa fa-refresh"></i></a>
<?php if($row2['ruta_estado']=='finalizado'){ ?>
<a href="#" class="text-info h5 btnTracking" data-id="<?=$row2['id']?>"><i class="fa fa-eye"></i></a>
<?php } ?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>

<div class="modal fade" id="modalEstado">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Cambiar estado</h5>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<div class="modal-body">
<input type="hidden" id="pedidoId">
<select id="nuevoEstado" class="form-control">
<option value="pendiente">Pendiente</option>
<option value="finalizado">Finalizado</option>
</select>
</div>
<div class="modal-footer">
<button class="btn btn-primary" id="guardarEstado">Guardar</button>
</div>
</div>
</div>
</div>

<div class="modal fade" id="modalTracking">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Información de entrega</h5>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<div class="modal-body">
<div id="trackingContent">Cargando...</div>
</div>
</div>
</div>
</div>

<?php include $r."inc/foot.php"; ?>

<script>
$('#dataTable').DataTable({
order:[[2,"asc"]],
stateSave:true,
lengthMenu:[[50,100,500,-1],[50,100,500,"All"]]
});

$(document).on('click','.btnEstado',function(e){
e.preventDefault();
$('#pedidoId').val($(this).data('id'));
$('#nuevoEstado').val($(this).data('estado'));
$('#modalEstado').modal('show');
});

$('#guardarEstado').click(function(){
$.post('',{
id:$('#pedidoId').val(),
estado:$('#nuevoEstado').val()
},function(){
location.reload();
});
});

$(document).on('click','.btnTracking',function(e){
e.preventDefault();
let id=$(this).data('id');
$('#modalTracking').modal('show');
$('#trackingContent').html('Cargando...');
$.get('?tracking='+id,function(r){
let d=JSON.parse(r);
let html=`
<b>Recibe:</b> ${d.recibe || ''}<br>
<b>Nota:</b> ${d.nota || ''}<br>
<b>Estado:</b> ${d.estado || ''}<br>
<b>Fecha inicio:</b> ${d.fecha_inicio || ''}<br>
<b>Fecha llegada:</b> ${d.fecha_llegada_real || ''}<br>
<b>Distancia:</b> ${d.distancia_metros || ''} m<br>
<b>Tiempo estimado:</b> ${d.tiempo_estimado_formato || ''}<br>
<b>Tiempo real:</b> ${d.tiempo_real_formato || ''}<br>
`;
if(d.foto){
html+=`<br><img src="https://tracking.quimiforen.com/api/${d.foto}" class="img-fluid">`;
}
$('#trackingContent').html(html);
});
});
</script>
</body>
</html>