import { fetchWithAuth } from '../fetchWithAuth';

const API_BASE_URL = import.meta.env.VITE_EFC_API_URL;

export const fetchPedimentoProcesos = async (pedimentoId, page = 1, pageSize = 10, filters = {}) => {
  try {
    const params = new URLSearchParams({
      pedimento: pedimentoId,
      page: page.toString(),
      page_size: pageSize.toString(),
    });

    // Agregar filtros si existen
    if (filters.estado !== undefined && filters.estado !== '') {
      params.append('estado', filters.estado);
    }
    if (filters.servicio !== undefined && filters.servicio !== '') {
      params.append('servicio', filters.servicio);
    }
    if (filters.organizacion_name) {
      params.append('organizacion_name__icontains', filters.organizacion_name);
    }
    if (filters.date_from) {
      params.append('created_at__gte', filters.date_from);
    }
    if (filters.date_to) {
      params.append('created_at__lte', filters.date_to);
    }
    if (filters.updated_from) {
      params.append('updated_at__gte', filters.updated_from);
    }
    if (filters.updated_to) {
      params.append('updated_at__lte', filters.updated_to);
    }

    const response = await fetchWithAuth(`${API_BASE_URL}/customs/procesamientopedimentos/?${params}`);
    
    if (!response.ok) {
      throw new Error(`Error ${response.status}: ${response.statusText}`);
    }

    const data = await response.json();
    return {
      results: data.results,
      count: data.count,
      next: data.next,
      previous: data.previous
    };
  } catch (error) {
    console.error('Error fetching Procesos:', error);
    throw error;
  }
};

// Mapeo de estados
export const getEstadoLabel = (estado) => {
  const estados = {
    1: 'Pendiente',
    2: 'En Proceso',
    3: 'Completado',
    4: 'Error',
    5: 'Cancelado'
  };
  return estados[estado] || `Estado ${estado}`;
};

export const getEstadoColor = (estado) => {
  const colores = {
    1: 'bg-yellow-100 text-yellow-800',
    2: 'bg-blue-100 text-blue-800',
    3: 'bg-green-100 text-green-800',
    4: 'bg-red-100 text-red-800',
    5: 'bg-gray-100 text-gray-800'
  };
  return colores[estado] || 'bg-gray-100 text-gray-800';
};

// Mapeo de servicios
export const getServicioLabel = (servicio) => {
  const servicios = {
    1: 'Digitalización',
    2: 'Validación',
    3: 'Procesamiento SAT',
    4: 'Generación COVEs',
    5: 'Generación EDocs',
    6: 'Envío VUCEM',
    7: 'Clasificación',
    8: 'Archivo Digital',
    9: 'Notificaciones'
  };
  return servicios[servicio] || `Servicio ${servicio}`;
};

export const getServicioColor = (servicio) => {
  const colores = {
    1: 'bg-purple-100 text-purple-800',
    2: 'bg-indigo-100 text-indigo-800',
    3: 'bg-blue-100 text-blue-800',
    4: 'bg-cyan-100 text-cyan-800',
    5: 'bg-teal-100 text-teal-800',
    6: 'bg-green-100 text-green-800',
    7: 'bg-yellow-100 text-yellow-800',
    8: 'bg-orange-100 text-orange-800',
    9: 'bg-pink-100 text-pink-800'
  };
  return colores[servicio] || 'bg-gray-100 text-gray-800';
};