/**
 * API Client para Code Pedimento Regimens
 * Gestiona las operaciones CRUD para las relaciones entre códigos de pedimento y regímenes
 */
import { api } from '$lib/api';

export interface CodePedimentoRegimen {
	id: number;
	pedimento_code: string;
	regimen_code: string | null;
	type_code: string | null;
}

export interface CodePedimentoRegimenListResponse {
	items: CodePedimentoRegimen[];
	total: number;
	page: number;
	page_size: number;
}

export interface CreateCodePedimentoRegimenData {
	pedimento_code: string;
	regimen_code?: string;
	type_code?: string;
}

export interface UpdateCodePedimentoRegimenData {
	pedimento_code?: string;
	regimen_code?: string;
	type_code?: string;
}

/**
 * API para Code Pedimento Regimens
 */
export const codePedimentoRegimensApi = {
    /**
     * Lista todos los code pedimento regimens con paginación y búsqueda
     * @param page - Número de página (por defecto 1)
     * @param pageSize - Tamaño de página (por defecto 50)
     * @param search - Término de búsqueda (opcional)
     */
    list: (page = 1, pageSize = 50, search?: string) => {
        let url = `/v1/public/reference_data/code-pedimento-regimens/?page=${page}&page_size=${pageSize}`;
        if (search) {
            url += `&search=${encodeURIComponent(search)}`;
        }
        return api.get<CodePedimentoRegimenListResponse>(url);
    },

    /**
     * Obtiene un por ID
     */
    get: (id: number) => 
        // CORRECTO: Slash después del ID
        api.get<CodePedimentoRegimen>(`/v1/code-pedimento-regimens/${id}/`),

    /**
     * Crea un nuevo code pedimento regimen
     */
    create: (data: CreateCodePedimentoRegimenData) =>
        // CORREGIDO: Añadido slash al final de la ruta
        api.post<CodePedimentoRegimen>('/v1/public/reference_data/code-pedimento-regimens/', data),

    /**
     * Actualiza un code pedimento regimen existente
     */
    update: (id: number, data: UpdateCodePedimentoRegimenData) =>
        // CORRECTO: Slash después del ID
        api.put<CodePedimentoRegimen>(`/v1/public/reference_data/code-pedimento-regimens/${id}/`, data),

    /**
     * Elimina un code pedimento regimen
     */
    delete: (id: number) => 
        // CORRECTO: Slash después del ID
        api.delete(`/v1/public/reference_data/code-pedimento-regimens/${id}/`)
};