/**
 * API Client para Pedimento Codes
 * Gestiona las operaciones CRUD para las claves de pedimento
 */
import { api } from '$lib/api';

export interface PedimentoCode {
	code: string;
	description: string;
}

export interface PedimentoCodeListResponse {
	items: PedimentoCode[];
	total: number;
	page: number;
	page_size: number;
}

export interface CreatePedimentoCodeData {
	code: string;
	description: string;
}

export interface UpdatePedimentoCodeData {
	code?: string;
	description?: string;
}

/**
 * API para Pedimento Codes
 */
export const pedimentoCodesApi = {
    /**
     * Lista todas las claves de pedimento con paginación
     * @param page - Número de página (por defecto 1)
     * @param pageSize - Tamaño de página (por defecto 50)
     */
    list: (page = 1, pageSize = 50) =>
        api.get<PedimentoCodeListResponse>(
            // CORREGIDO: Añadido '/' antes del '?'
            `/v1/public/reference_data/pedimento-codes/?page=${page}&page_size=${pageSize}`
        ),

    /**
     * Obtiene una clave de pedimento por code
     * @param code - Código de la clave de pedimento
     */
    get: (code: string) => 
        // CORREGIDO: Añadido '/' final
        api.get<PedimentoCode>(`/v1/public/reference_data/pedimento-codes/${code}/`),

    /**
     * Crea una nueva clave de pedimento
     * @param data - Datos de la clave de pedimento a crear
     */
    create: (data: CreatePedimentoCodeData) =>
        // CORREGIDO: Añadido '/' final
        api.post<PedimentoCode>('/v1/public/reference_data/pedimento-codes/', data),

    /**
     * Actualiza una clave de pedimento existente
     * @param code - Código de la clave de pedimento a actualizar
     * @param data - Datos a actualizar
     */
    update: (code: string, data: UpdatePedimentoCodeData) =>
        // CORREGIDO: Añadido '/' después del código
        api.put<PedimentoCode>(`/v1/public/reference_data/pedimento-codes/${code}/`, data),

    /**
     * Elimina una clave de pedimento
     * @param code - Código de la clave de pedimento a eliminar
     */
    delete: (code: string) => 
        // CORREGIDO: Añadido '/' después del código
        api.delete(`/v1/public/reference_data/pedimento-codes/${code}/`)
};