<?php

declare(strict_types=1);

namespace App\Repositories;

use PDO;

class PedidoTrackingRepository
{
    private PDO $db;

    public function __construct(PDO $db)
    {
        $this->db = $db;
    }

    public function guardar(int $pedidoId, int $repartidorId, float $lat, float $lng, ?float $rumbo, ?float $velocidad): void
    {
        $stmt = $this->db->prepare(
            'INSERT INTO pedido_tracking (pedido_id, repartidor_id, lat, lng, rumbo, velocidad, created_at)
             VALUES (:pedido_id, :repartidor_id, :lat, :lng, :rumbo, :velocidad, NOW())'
        );
        $stmt->execute([
            'pedido_id' => $pedidoId,
            'repartidor_id' => $repartidorId,
            'lat' => $lat,
            'lng' => $lng,
            'rumbo' => $rumbo,
            'velocidad' => $velocidad,
        ]);
    }

    public function ultimaUbicacion(int $pedidoId): ?array
    {
        $stmt = $this->db->prepare(
            'SELECT * FROM pedido_tracking WHERE pedido_id = :pedido_id ORDER BY created_at DESC LIMIT 1'
        );
        $stmt->execute(['pedido_id' => $pedidoId]);
        $ubicacion = $stmt->fetch();

        return $ubicacion ?: null;
    }

    public function historial(int $pedidoId): array
    {
        $stmt = $this->db->prepare(
            'SELECT lat, lng, rumbo, velocidad, created_at FROM pedido_tracking
             WHERE pedido_id = :pedido_id ORDER BY created_at ASC'
        );
        $stmt->execute(['pedido_id' => $pedidoId]);

        return $stmt->fetchAll();
    }
}
