// Telemetry Service - Camada de dados para telemetria
// Flag USE_MOCK permite alternar entre mock data e API real

import { mockVehicles, mockPositionHistory, mockAlerts } from '../mocks/telemetryMock';

// Flag para alternar entre mock e API real
const USE_MOCK = true;

// URL da API (será usada quando USE_MOCK = false)
const API_URL = import.meta.env.VITE_API_URL || 'http://localhost:3000';

export const telemetryService = {
  /**
   * Retorna posições em tempo real de todos os veículos
   */
  async getVehiclePositions() {
    if (USE_MOCK) {
      // Simula delay de rede
      await new Promise(resolve => setTimeout(resolve, 500));
      return mockVehicles;
    }
    
    // Código para API real (futuro)
    const response = await fetch(`${API_URL}/api/gr/telemetry/positions`);
    if (!response.ok) throw new Error('Erro ao buscar posições');
    return response.json();
  },

  /**
   * Retorna histórico de posições de um veículo específico
   * @param {string} plate - Placa do veículo
   */
  async getVehicleHistory(plate) {
    if (USE_MOCK) {
      await new Promise(resolve => setTimeout(resolve, 300));
      return mockPositionHistory[plate] || [];
    }
    
    const response = await fetch(`${API_URL}/api/gr/telemetry/history/${plate}`);
    if (!response.ok) throw new Error('Erro ao buscar histórico');
    return response.json();
  },

  /**
   * Retorna veículos com alertas ativos
   */
  async getAlerts() {
    if (USE_MOCK) {
      await new Promise(resolve => setTimeout(resolve, 200));
      return mockAlerts;
    }
    
    const response = await fetch(`${API_URL}/api/gr/telemetry/alerts`);
    if (!response.ok) throw new Error('Erro ao buscar alertas');
    return response.json();
  },

  /**
   * Busca veículo por placa
   * @param {string} plate - Placa do veículo
   */
  async getVehicleByPlate(plate) {
    if (USE_MOCK) {
      await new Promise(resolve => setTimeout(resolve, 200));
      return mockVehicles.find(v => v.plate === plate) || null;
    }
    
    const response = await fetch(`${API_URL}/api/gr/telemetry/vehicle/${plate}`);
    if (!response.ok) throw new Error('Erro ao buscar veículo');
    return response.json();
  }
};
