/**
 * API Client para Payment Methods
 * Gestiona las operaciones CRUD para los métodos de pago
 */
import { api } from '$lib/api';

export interface PaymentMethod {
	key: string;
	description: string;
}

export interface PaymentMethodListResponse {
	items: PaymentMethod[];
	total: number;
	page: number;
	page_size: number;
}

export interface CreatePaymentMethodData {
	key: string;
	description: string;
}

export interface UpdatePaymentMethodData {
	key?: string;
	description?: string;
}

/**
 * API para Payment Methods
 */
export const paymentMethodsApi = {
    list: (companyId: number, page = 1, pageSize = 50, search?: string) => {
        let url = `/v1/public/reference_data/payment-methods/?page=${page}&page_size=${pageSize}&company_id=${companyId}`;
        if (search) {
            url += `&search=${encodeURIComponent(search)}`;
        }
        return api.get<PaymentMethodListResponse>(url);
    },

    /**
     * Obtiene un método de pago por key
     * @param companyId - ID de la empresa
     * @param key - Clave del método de pago
     */
    get: (companyId: number, key: string) => 
        // CORREGIDO: Añadido '/' final
        api.get<PaymentMethod>(`/v1/public/reference_data/payment-methods/${key}/?company_id=${companyId}`),

    /**
     * Crea un nuevo método de pago
     * @param data - Datos del método de pago a crear
     */
    create: (data: CreatePaymentMethodData) =>
        // CORREGIDO: Añadido '/' final
        api.post<PaymentMethod>('/v1/public/reference_data/payment-methods/', data),

    /**
     * Actualiza un método de pago existente
     * @param key - Clave del método de pago a actualizar
     * @param data - Datos a actualizar
     */
    update: (key: string, data: UpdatePaymentMethodData) =>
        // CORREGIDO: Añadido '/' después de la key
        api.put<PaymentMethod>(`/v1/public/reference_data/payment-methods/${key}/`, data),

    /**
     * Elimina un método de pago
     * @param key - Clave del método de pago a eliminar
     */
    delete: (key: string) => 
        // CORREGIDO: Añadido '/' después de la key
        api.delete(`/v1/public/reference_data/payment-methods/${key}/`)
};