import axios from 'axios'
import { useAuthStore } from '../stores/auth' // Importa o AuthStor

const API_URL = 'http://127.0.0.1:5000'

export const cameraService = {
  async getAllCameras() {
    try {
      const authStore = useAuthStore();
      const service_instance_id = authStore.service_instance_id; // Obtém o ID da instância de serviço do stor
      const response = await axios.get(`${API_URL}/camera/`)
      console.log('Câmeras recebidas:', response.data) // Exibe as câmeras recebidas no console
      console.log('ID da instância de serviço:', service_instance_id) // Exibe o ID da instância de serviço no console
      const filteredCameras = response.data.cameras.filter(camera => {
        // Filtra câmeras que não estão deletadas
        return String(camera.service_instance_id) === String(service_instance_id)
      })
      this.cameras = filteredCameras // Atualiza o estado com as câmeras filtradas
      console.log('Câmeras filtradas:', filteredCameras) // Exibe as câmeras filtradas no console
      return filteredCameras

    } catch (error) {
      console.error('Erro ao buscar câmeras:', error)
      throw error
    }
  },

  async getCameraById(id) {
    try {
      const response = await axios.get(`${API_URL}/camera/${id}`)
      return response.data
    } catch (error) {
      console.error(`Erro ao buscar câmera com ID ${id}:`, error)
      throw error
    }
  },

  async createCamera(cameraData) {
    try {
      const response = await axios.post(`${API_URL}/camera/`, cameraData)
      return response.data
    } catch (error) {
      console.error('Erro ao criar câmera:', error)
      throw error
    }
  },

  async updateCamera(id, cameraData) {
    try {
      const response = await axios.put(`${API_URL}/camera/${id}`, cameraData)
      return response.data
    } catch (error) {
      console.error(`Erro ao atualizar câmera com ID ${id}:`, error)
      throw error
    }
  },

  async deleteCamera(id) {
    try {
      const response = await axios.delete(`${API_URL}/camera/${id}`)
      return response.data
    } catch (error) {
      console.error(`Erro ao excluir câmera com ID ${id}:`, error)
      throw error
    }
  },

  getStreamUrl(cameraData) {
    // Lógica para determinar URL de streaming com base no tipo da câmera
    if (cameraData.type === 'RTSP') {
      return `${API_URL}/stream/rtsp_proxy/${cameraData.id}`
    } else if (cameraData.type === 'HTTP') {
      return cameraData.url
    } else if (cameraData.type === 'HLS') {
      return cameraData.url
    } else {
      // Fallback para simulação em desenvolvimento
      return `${API_URL}/stream/mock/${cameraData.id}`
    }
  }
}